Django 使用清晰的表单用 css 渲染表单字段

Posted

技术标签:

【中文标题】Django 使用清晰的表单用 css 渲染表单字段【英文标题】:Django render a form field with css using crispy forms 【发布时间】:2015-04-14 13:03:00 【问题描述】:

我有一个表格,我想用清晰的表格来渲染,

表格

class MyForm(forms.ModelForm):

    class Meta:
        model = MyModel
        excludes = ('user', 'created')

    def __init__(self, *args, **kwargs):


        self.helper = FormHelper()
        self.helper.form_show_labels = False ## I only need the input field
        self.helper.layout = layout.Layout(

            layout.Field('name', css_class="form-control"), 
            layout.Field('objective', css_class="form-control"),
            ## ADD CLASS form-control TO THE FIELDS (This is the problem since the fields are not rendered with the class)
        )
        super(MyForm, self).__init__(*args, **kwargs)

模板

<div class="form-group">
    <label>Name <i class="fa fa-question-circle tooltips" data-original-title="Lorem Ipsum" data-html="true" data-placement="right" data-container="body"></i></label>
     form.name|as_crispy_field 
     form.name.errors|striptags 
</div>
<div class="form-group">
    <label>Theme/ Objective <i class="fa fa-question-circle tooltips" data-original-title="Lorem Ipsum" data-html="true" data-placement="right" data-container="body"></i></label>
     form.objective|as_crispy_field 
     form.objective.errors|striptags 
</div>

字段不使用类form-control 呈现。 标签已呈现,我不需要它们,因为我有自定义标签。 任何有关如何使用类呈现字段的帮助将不胜感激。谢谢。

【问题讨论】:

您可以考虑跳过crispy-forms 并手动呈现您的表单docs.djangoproject.com/en/1.7/topics/forms/… @Selcuk。感谢您的建议,如何在字段中添加类表单控件? 非常感谢。这似乎解决了我的问题。 【参考方案1】:

如果你手动渲染你的字段,你可以像这样添加它们:

<input type="text" name=" form.objective.html_name " 
       id= form.objective.id_for_label " 
       class="form-control">

请注意,这将要求您手动渲染所有 inputs。

【讨论】:

以上是关于Django 使用清晰的表单用 css 渲染表单字段的主要内容,如果未能解决你的问题,请参考以下文章

在 Bootstrap Modal 中使用 django 清晰表单的 AJAX 反馈表单

Django:基于类的视图无法呈现清晰的表单

django 如何写表单提交

如何使用清晰的表单在一行上显示 Django SelectDateWidget

Django 格式化表单的最佳方法是啥?

Google App Engine 渲染和 Django 表单