我想将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,因为它值得。
答案 0 :(得分:2)
您需要以有效格式定义required
属性。
username.widget.attrs['required'] = 'required'
请点击此处了解更多详情: https://stackoverflow.com/a/3012975/1566605
答案 1 :(得分:1)
@mariodev是正确的。如果您想要更优雅的方法,请参阅https://stackoverflow.com/a/37738828/2812260(下面复制的相关部分):
如果你真的想要编写优雅的DRY代码,你应该创建一个基础表单类,动态查找所有必需的字段并为你修改它们的widget必需属性(你可以任意命名,但是“BaseForm”似乎很合适):</ p>
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)