【问题标题】:Adding styles to django.forms controls using Bootstrap使用 Bootstrap 向 django.forms 控件添加样式
【发布时间】:2014-11-18 21:46:29
【问题描述】:

我的 HTML 页面中有一个表单,我使用 Django 的 forms.Form 类生成该表单。我想将样式应用于使用 Bootstrap 生成的 html 控件。我发现如果它们具有某些类属性,Bootstrap 会将样式应用于表单控件,例如form-control。我使用form.as_p 指令将表单对象包含在我的模板中。由于我在 html 页面中没有明确的 html 控件,因此我不知道如何包含 class 属性以便应用样式。你能帮我解决这个问题,以便我可以将 Bootstrap 样式应用于我的表单控件吗?

谢谢, 拉克什。

【问题讨论】:

    标签: django twitter-bootstrap


    【解决方案1】:

    我发现处理此问题的最简单方法是使用crispy-forms。

    【讨论】:

    • 这就是我的答案。别傻了,使用工具:)
    【解决方案2】:

    您可以使用小部件定义它。例如:

    class SearchForm(forms.Form):
        q=forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Search'}))
    

    另一个使用ModelForm的例子:

    class SearchForm(ModelForm):
        class Meta:
            model = SearchField
            fields = ['name']
            widgets = {
                'name' = forms.TextInput(attrs={'class':'form-control'})
            }
    

    【讨论】:

    • 我已经在表单类的 Meta 类中使用 'model=MyModel' 语句声明了我的表单字段。在这种情况下如何添加属性?
    【解决方案3】:

    您还可以在Form 的__init__ 中指定小部件的类,如下所示。 当您有 ModelForm 并且您不想覆盖默认小部件或字段时,这很有用。

    class SearchForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super(SearchForm, self).__init__(*args, **kwargs)
            self.fields['q'].widget.attrs = {'class': 'form-control'}
    
        class Meta:
            model = SearchQuery
            fields = ('q',)
    

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2011-05-10
      • 2020-05-02
      相关资源
      最近更新 更多