【问题标题】:How do I correctly add html attributes to Django form widget如何正确地将 html 属性添加到 Django 表单小部件
【发布时间】:2015-01-10 00:36:30
【问题描述】:

我正在尝试在我的 Django 项目中使用 Parsley.js 进行验证。我目前正处于尝试将必要的 Parsley 属性添加到表单字段的步骤中。希望这是正确的,但有人告诉我需要将属性传递给现有表单字段中的小部件。

email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                                   maxlength=75)),label=_("Email"))

我的问题是如何正确地将属性传递给表单小部件,以便我可以使用 parsley.js 验证此表单字段?我在下面试了一下,但我知道这是不正确的。

email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                                   maxlength=75, data-required="true", data-trigger="keyup")), label=_("Email"))

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    覆盖表单类中的__init__ 函数可能是最好的选择...

    class YourClass(ModelForm):
        def __init__(self, *args, **kwargs):
            self.fields['yourfield'].widget.attrs.update({'yourattribute': 'yourattributevalue'})
    

    【讨论】:

    • 所以没有办法只将属性传递到我包含的示例中?
    【解决方案2】:

    您应该能够像这样直接将属性传递给字段声明:

    email = forms.EmailField(widget=forms.TextInput(attrs={'data-trigger':'keyup', 'data-required' : 'true'}), maxlength=75, label=_("Email"))
    

    查看 django 表单小部件 attrs 文档了解更多详情:https://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.Widget.attrs

    【讨论】:

    • 我怀疑这与我正在寻找的答案很接近,但这会产生语法错误。
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2012-02-17
    • 1970-01-01
    • 2011-09-02
    • 2020-05-19
    相关资源
    最近更新 更多