如何将所需属性添加到Django表单字段

时间:2015-03-07 15:17:39

标签: python django html5

我想将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,因为它值得。

2 个答案:

答案 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)