[英]How to add required attribute to a Django form field
我想將 Django 表單域呈現為:
<input type="text" name="username" required>
但是當我嘗試username.widget.attrs['required'] = ''
我得到類似的東西:
<input type="text" name="username" required="">
有沒有一種方法可以在生成的 HTML 表單中顯示required
的獨立 HTML5 屬性?
我在 Python 2.6 上使用 Django 1.6,物有所值。
您需要以有效格式定義required
屬性。
username.widget.attrs['required'] = 'required'
請在此處查看更多詳細信息: https : //stackoverflow.com/a/3012975/1566605
@mariodev是正確的。 如果您希望以更優雅的方式執行此操作,請參閱https://stackoverflow.com/a/37738828/2812260 (相關部分復制如下):
如果您真的想編寫精美的DRY代碼,則應創建一個基類類,該類可動態查找所有必需字段並為您修改其小部件必需屬性(您可以隨意命名,但“ BaseForm”似乎很合適) :
from django.forms import ModelForm
class BaseForm(ModelForm):
def __init__(self, *args, **kwargs):
super(BaseForm, self).__init__(*args, **kwargs)
for bound_field in self:
if hasattr(bound_field, "field") and bound_field.field.required:
bound_field.field.widget.attrs["required"] = "required"
然后讓您所有的Form對象從中派生:
class UserForm(BaseForm):
class Meta:
model = User
fields = []
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
email = forms.EmailField(required=True, max_length=100)
如果您想要基於每個表單而不是每個模型的聲明性選項,這是我的解決方案:
from django import forms
class RequiredFieldsModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RequiredFieldsModelForm, self).__init__(*args, **kwargs)
for bound_field in self:
if (
hasattr(bound_field, "field") and
bound_field.name in self.Meta.required_fields
):
bound_field.field.widget.attrs["required"] = "required"
# Your forms
class UserForm(RequiredFieldsModelForm):
class Meta:
required_fields = ['username']
model = User
只需將 required 屬性設置為小部件,如下所示:
self.fields['field_name'].widget = forms.TextInput(attrs={'required':'required'})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.