如何在Django表单中设置自定义HTML属性?
我有一个Django表单,它是网页的一部分。假设我有一个字段:
search_input = forms.CharField(_(u'Search word'), required=False)
我只能通过模板中的{{ form.search_input }}
来访问它。请问如何设置自定义的HTML属性(比如名字和数值)呢?我希望找到一个灵活的解决方案,这样我就可以为所有类型的字段添加任何需要的自定义属性。
我找到了一些资料,地址是https://docs.djangoproject.com/en/dev/ref/forms/widgets/#widget
但是使用attrs时,如果和CharField一起用,会给我这样的结果:
__init__() got an unexpected keyword argument 'attrs'
4 个回答
9
还有一种仅使用模板的解决方案,利用了一个过滤器。我推荐你使用 django-widget-tweaks
这个工具:
{% load widget_tweaks %}
{{ form.email|attr:'required:true' }}
11
你也可以试试这个:
search_input = forms.CharField(
_(u'Search word'),
required=False,
widget=forms.TextInput(attrs={'size': 10, 'title': 'Search',})
)
这个内容在标题为 样式化小部件实例 的部分有详细说明。
27
你可以把CharField上的小部件换掉,这样就能达到你想要的效果。
search_input = forms.CharField(_(u'Search word'), required=False)
search_input.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search',})