【问题标题】:Customize Django Form Style自定义 Django 表单样式
【发布时间】:2016-03-25 07:56:24
【问题描述】:

如何自定义 Django 表单并为它们设置类?例如,我有一个带有引导类和自定义字体的文本框:

<input type="text" class="form-control myfont" value="{{ model1.field1 }}"/>

但原始表单字段“{{ form1.form_field1 }}”是一个没有样式的简单文本框。我尝试使用此代码:

<input type="text" class="form-control myfont" value="{{ form1.form_field1 }}"/>

此代码无效。你有什么建议吗??

【问题讨论】:

  • {{ form1.form_field1 }} 将整个表单域呈现到页面。 {{ form1.form_field1.value }} 是将该字段的值呈现到页面的内容。但是,将 form.form_field1 的值注入到您编写的一段 html 中并不是一个好主意,因为它无法正确处理字符串的转义。你会失去很多 django 的优点。

标签: css django django-forms


【解决方案1】:

您可以在表单的__init__ 方法中为小部件添加额外的属性。如果你有很多这样的表格,那么你可以有一个超类表格:

class BootstrapForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(BootstrapForm, self).__init__(*args, **kwargs)
        for field_name in self.fields:
            field = self.fields.get(field_name)
            if field:
                field.widget.attrs.update({
                    'class': "form-control myfont"
                })

然后让你的其他表单扩展这个。

【讨论】:

  • @ArashHatami 在这个意义上不起作用?你能发布你的模板吗?
【解决方案2】:

如果你想以最小的阻力注入额外的属性,你可以使用 django-tweaks。

安装

 $ pip install django-widget-tweaks

然后将“widget_tweaks”添加到 INSTALLED_APPS。

https://pypi.python.org/pypi/django-widget-tweaks

模板.html

{% load widget_tweaks %}
{% render_field form1.form_field1 class="form-control myfont" %}

【讨论】:

  • 我有错误:"'widget_tweaks' 不是有效的标签库"
  • 阅读有关如何安装 django-tweaks 的文档,它是第三方应用程序,因此您必须 pip 安装,并将其添加到您的 settings.py 中。
猜你喜欢
  • 2010-12-26
  • 2017-04-13
  • 2011-09-19
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 2019-10-02
相关资源
最近更新 更多