【问题标题】:Django-crispy-forms: set css for individual field and inputsDjango-crispy-forms:为单个字段和输入设置 css
【发布时间】:2020-01-21 15:50:24
【问题描述】:

有没有办法为单个字段指定 css 并以 django 清晰的表单输入?我正在使用 bootstrap4,并希望对表单中的一些字段使用水平表单。

我知道您可以使用 self.helper 来设置 label.class 和 field.class 但我认为这适用于所有字段。我只想更改我的几个字段的标签和字段类。

编辑:

我需要将css添加到与输入不同的标签

我正在尝试在表单中获取一个水平字段,例如下面的金额字段

<div id="div_id_amount" class="row">
    <label for="id_amount" class="col-form-label col-2  requiredField">
        Amount<span class="asteriskField">*</span>
    </label>
    <div class="">
        <input type="number" name="amount" step="0.01" class="numberinput form-control col-md" required="" id="id_amount">
        </div>
</div>

【问题讨论】:

  • layouts。或者您可以只为字段的widget 设置类属性。这两个链接都向您展示了输入元素的类已更改的示例。
  • 对不起,我对此很陌生,很难阅读文档。我基本上想制作一个水平表单并已阅读我需要为 id 和输入字段指定 col-* 大小并将其包装在行 div 中。但我不知道如何为 1 个元素指定两种尺寸。这有意义吗?
  • 我通常建议不要使用crispy-forms,因为它将布局移动到Form 代码中,并且我认为布局应该在HTML 中完成。第二个链接告诉您,如果您将name = forms.CharField(widget=forms.TextInput(attrs={'class': 'col-6'})) 添加到表单中的name 字段,您的输入字段将具有col-6 作为类属性。
  • 无论如何,文档写得很好,“阅读文档很困难”通常意味着“我不会被打扰”。抱歉,如果不阅读和理解文档,您将一事无成。
  • 不不,我明白了,相信我这是最后的手段,我已经寻找答案大约一周了。您将使用什么属性来设置标签的 css?我想这就是我正在努力解决的问题。感谢您的帮助

标签: django bootstrap-4 django-crispy-forms


【解决方案1】:

给出了一个解决方案here

  • 您可以通过小部件为输入字段添加类属性,如django docs 中所述
  • 您在 HTML 中显式添加了具有正确类的 &lt;label&gt; 标记。

或者,对于标签,您还可以创建以下模板过滤器:

@register.filter(is_safe=True)
def label_with_classes(field, css):
    return field.label_tag(attrs={'class': css})

在您使用{% load my_filters %} 加载模板后,您可以像这样在模板中使用它:{{ form.name|label_with_classes:"col-sm-6 col-lg-3" }}

我不知道脆皮表格的简单方法。

【讨论】:

    【解决方案2】:

    你可以在你的布局中添加这个:

    Field('password', id="password-field", css_class="passwordfields", title="Explanation")

    您可以找到更多详情here

    【讨论】:

    • 那将为包含标签和输入的 div 设置 css 是否正确?有没有办法分别设置标签和输入的css?
    猜你喜欢
    • 2013-10-19
    • 2018-06-17
    • 2014-05-09
    • 2016-08-16
    • 1970-01-01
    • 2018-07-16
    • 2022-11-28
    • 2019-12-31
    • 2014-12-07
    相关资源
    最近更新 更多