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

Posted

技术标签:

【中文标题】如何在 Django 表单的输入中添加额外的属性?【英文标题】:How do I add an extra attribute in my input for Django forms? 【发布时间】:2011-06-04 23:07:05 【问题描述】:
 theform.address 

 theform.phone 

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

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

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

【问题讨论】:

"placeholder="Username" 到输入文本字段?"您是在谈论修改创建的 html 吗?如果是这样,您能否提供一个实际示例来说明您希望 HTML 是什么?如果没有,你能澄清你的问题吗? 是的,正在修改创建的 HTML。 你不知道,这是 Django,你按照它告诉你的去做...... 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

这只会打印出变量名本身(“用户名”)而不是用户名,不是吗?【参考方案3】:

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

这是一个示例(适用于通过 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'
                
            )
        

【讨论】:

以上是关于如何在 Django 表单的输入中添加额外的属性?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何在表单集构建后添加额外的表单?

如何将额外的参数传递给 django admin 自定义表单?

如何在表单提交之前将多个图像异步添加到 django 表单

在 django 中检索表单字段属性

Django 为登录表单设置样式并添加额外的 span

如何向 symfony 2 表单添加一些额外的数据