ページの一部である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'
CharFieldのウィジェットを変更して、探している効果を実現できます。
search_input = forms.CharField(_(u'Search Word'), required=False)
search_input.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search',})
これを試すこともできます:
search_input = forms.CharField(
_(u'Search Word'),
required=False,
widget=forms.TextInput(attrs={'size': 10, 'title': 'Search',})
)
これは、 ウィジェットインスタンスのスタイリング というタイトルのセクションに記載されています。
古い質問ですが、別の選択肢を探している人には、これもあります: https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/#overriding-the-default-fields
あなたはこのようなことをすることができます:
from Django.forms import ModelForm, Textarea
from myapp.models import Author
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}
フィルタを使用したテンプレートのみのソリューションもあります。私はお勧め - Django-widget-tweaks
:
{% load widget_tweaks %}
{{ form.email|attr:'required:true' }}