【问题标题】:How do I set custom HTML attributes in django forms?如何在 django 表单中设置自定义 HTML 属性?
【发布时间】:2011-11-06 02:08:38
【问题描述】:

我有一个 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'

【问题讨论】:

    标签: python html django forms custom-attributes


    【解决方案1】:

    你可以改变CharField上的widget来达到你想要的效果。

    search_input = forms.CharField(_(u'Search word'), required=False)
    search_input.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search',})
    

    【讨论】:

      【解决方案2】:

      你也可以试试这个:

      search_input = forms.CharField(
          _(u'Search word'),
          required=False,
          widget=forms.TextInput(attrs={'size': 10, 'title': 'Search',})
      )
      

      这在标题为Styling widget instances 的部分中有记录。

      【讨论】:

        【解决方案3】:

        老问题,但对于正在寻找另一种选择的人来说,还有这个: 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}),
                }
        

        【讨论】:

          【解决方案4】:

          还有使用过滤器的纯模板解决方案。我推荐django-widget-tweaks

          {% load widget_tweaks %}
          
          {{ form.email|attr:'required:true' }}
          

          【讨论】:

          • 如果我想改变例如“模式”,我无法完成这项工作
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-21
          • 1970-01-01
          相关资源
          最近更新 更多