【问题标题】:How do I add an extra attribute in my input for Django forms?如何在 Django 表单的输入中添加额外的属性?
【发布时间】: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,你按照它告诉你的去做......

标签: javascript python html css 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'
                    }
                )
            }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-18
      • 2011-06-24
      • 2018-01-24
      • 2019-03-11
      • 2014-11-13
      • 1970-01-01
      • 2011-07-04
      • 2014-02-14
      相关资源
      最近更新 更多