【问题标题】:Cannot display label and field on same line using django-crispy forms无法使用 django-crispy 表单在同一行显示标签和字段
【发布时间】:2016-07-12 16:40:55
【问题描述】:

我试图将我的字段标签放在表单的左侧,右侧有文本输入。但是,我似乎无法让它工作。这是我放置的设置。

forms.py

helper = FormHelper()
helper.form_class = 'form-horizontal'
helper.layout = Layout(
    Field('test_field'),
    FormActions(
        Submit('submit', 'Record', css_class='btn btn-primary'),
        Reset('reset', 'Clear', css_class='btn btn-default'),
    )
)

form.html

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block page_panel %}
{% crispy form %}
{% endblock %}

生成的html是这样的 result

【问题讨论】:

  • 你不需要 form_class= 'form-horizo​​ntal'

标签: django django-forms django-crispy-forms


【解决方案1】:

在您的示例中,您尝试实现 Bootstrap form-horizontal。要正确执行此操作,您需要将帮助类添加到标签和表单输入per the docs

试试这个让form-horizontal工作,例如:

helper = FormHelper()
helper.form_class = 'form-horizontal'
helper.label_class = 'col-lg-2'
helper.field_class = 'col-lg-8'
helper.layout = Layout(
    Field('test_field'),
    FormActions(
        Submit('submit', 'Record', css_class='btn btn-primary'),
        Reset('reset', 'Clear', css_class='btn btn-default'),
    )
)

您可以根据需要调整列大小。

另一种布局略有不同的选项(标签也与输入在同一级别而不是在其上方)是使用 Bootstrap 的form-inline,这需要different config using Django crispy forms

【讨论】:

    【解决方案2】:

    在我将以下内容添加到 settings.py 之前,我也无法让它工作:

    CRISPY_TEMPLATE_PACK = 'bootstrap4'
    

    【讨论】:

      【解决方案3】:

      使用 django-crispy-forms 对我有用的是使用辅助属性 form_style = 'inline'

      【讨论】:

        猜你喜欢
        • 2021-05-29
        • 2017-07-20
        • 1970-01-01
        • 2013-02-07
        • 2018-08-05
        • 2012-07-13
        • 2012-11-09
        • 1970-01-01
        • 2015-10-22
        相关资源
        最近更新 更多