如何在Django表单的输入中添加额外的属性?

时间:2011-01-06 22:10:03

标签: javascript python html css django

{{ theform.address }}

{{ theform.phone }}

这就是我在模板中所做的。

但是,如果我想将placeholder="Username"添加到输入文本字段,该怎么办? (自定义属性)

<input type="text" name="address" id="id_address" placeholder="username"/>

3 个答案:

答案 0 :(得分:7)

attrs关键字参数添加到字段构造函数的widget,并在其中包含您的属性:

address = forms.TextField(widget=forms.TextInput(attrs={'placeholder': 'username'}))

如果您想看到它的实际效果,请查看django-registration's forms.py

答案 1 :(得分:4)

或者,您可以使用http://pypi.python.org/pypi/django-widget-tweaks应用:

{% load widget_tweaks %}
... 
{{ theform.address|attr:"placeholder:username" }}

答案 2 :(得分:0)

在指定表单的类中,您可以为每个表单元素设置“小部件”。 “小部件”包含有关该元素的属性等的信息。

这是一个示例(如果您通过ModelForm创建表单,则适用):

class BlogEntryForm(ModelForm):
    class Meta:
        model = BlogEntry
        fields = (
            'title',
            'category',
            'text_entry',
            'private'
        )

        widgets = {
            'category': forms.Select(
                attrs={
                    'class': 'form-control'
                },
                choices=[]
            ),
            'title': forms.TextInput(
                attrs={
                    'class': 'form-control',
                }
            ),
            'text_entry': forms.Textarea(
                attrs={
                    'id': 'text-editor',
                    'class': 'form-control',
                    'rows': '17',
                }
            ),
            'private': forms.CheckboxInput(
                attrs = {
                    'id': 'make-post-private',
                    'class': 'custom-control-input'
                }
            )
        }