Django Crispy Forms、Bootstrap、helper.label_class 和 helper.field_class 不起作用

Posted

技术标签:

【中文标题】Django Crispy Forms、Bootstrap、helper.label_class 和 helper.field_class 不起作用【英文标题】:Django Crispy Forms, Bootstrap, helper.label_class and helper.field_class not working 【发布时间】:2014-05-19 01:35:07 【问题描述】:

我对脆皮表单框架有问题,设置 field_class 和 label_class 属性对布局没有影响。我正在使用 Bootstrap3,所有的 css 文件都可以在我网站的其他地方使用(即它们在静态目录中被成功提取)。

forms.py

class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

    helper = FormHelper()
    helper.form_class  = 'form-horizontal'
    helper.label_class = 'col-lg-2'
    helper.field_class = 'col-lg-10'
    helper.layout = Layout(
        'username',
        'password',
        Submit('submit', 'Log Me In', css_class='btn btn-success'),
    )

login.html

% extends "base.html" %
% load crispy_forms_tags %
% block content %
    % crispy form %
% endblock %

在我的浏览器中检查元素时,col-lg-2col-lg-10 CSS 类根本没有分别应用于标签和字段...

【问题讨论】:

是否应用了 form_class 或布局属性?编辑:还要检查在您的项目中更改此设置。 django-crispy-forms.readthedocs.org/en/latest/… 调试选项未显示任何错误。你能澄清一下 form_class 或 layout 属性是什么意思吗? 呈现的 HTML 中的表单元素上是否有“form-horizo​​ntal”类? 是的,有。绝对。 仅供参考,我将 bootstrap3 用于 css。 【参考方案1】:

您应该将所有辅助逻辑放在__init__ 方法下:

class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(self, *args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_class  = 'form-horizontal'
        self.helper.label_class = 'col-lg-2'
        self.helper.field_class = 'col-lg-10'
        self.helper.layout = Layout(
            'username',
            'password',
            Submit('submit', 'Log Me In', css_class='btn btn-success'),
        )

【讨论】:

以上是关于Django Crispy Forms、Bootstrap、helper.label_class 和 helper.field_class 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 渲染 django-crispy-forms 的验证错误?

Django-crispy-forms:为 AppendedText 父 div 设置 CSS 类

python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

使用内联表单在 django-crispy-forms 中呈现字段错误

使用Ajax验证并提交Django表单(django-crispy-forms)

在 python 中通过 django-crispy-forms 渲染表单