以这个非常简单的形式为例:
class SearchForm(Form): q = forms.CharField(label='search')
这将在模板中呈现:
<input type="text" name="q" id="id_q" />
但是,我想将placeholder属性值添加到此字段,Search以便HTML看起来像这样:
placeholder
Search
<input type="text" name="q" id="id_q" placeholder="Search" />
最好我想CharField通过字典或类似的东西将占位符值传递给表单类中的:
CharField
q = forms.CharField(label='search', placeholder='Search')
做到这一点的最佳方法是什么?
查看小部件文档。基本上看起来像:
q = forms.CharField(label='search', widget=forms.TextInput(attrs={'placeholder': 'Search'}))
是的,更多的写作,但是分离可以更好地抽象更复杂的情况。
您也可以声明widgets包含一个属性<field name> => <widget instance>直接映射Meta你的ModelForm子类。
widgets
<field name> => <widget instance>
Meta
ModelForm