首页 > 解决方案 > 如何手动设置 Django 表单的模板?

问题描述

在 Django 项目中,我有以下形式:

class MyForm(forms.Form):
    field_1 = forms.BooleanField(initial=True, required=False)
    field_2 = forms.ChoiceField(
        initial='choice_1',
        choices=(
            ('choice_1', 'Choice 1'),
            ('choice_2', 'Choice 2'),
            ('choice_3', 'Choice 3')
        )
    )

在模板中,我只是使用{{ form }}. 表单使用浏览器默认值呈现。但是,对于表单,我确实有一个非常精确的 HTML 标记。它是这样的:

<form action="/" method="POST">
    <div class="form-field">
        <div class="my-checkbox">
            <input type="checkbox" id="field-1" value="">
            <label for="field-1">Field 1 (Recommended)</label>
        </div>
    </div>
    <div class="form-field">
        <label for="field-2" class="required">Field 2</label>
        <select class="my-select" id="field-2" required="required">
            <option value="choice_1" selected="selected">Choice 1</option>
            <option value="choice_2">Choice 2</option>
            <option value="choice_3">Choice 3</option>
        </select>
    </div>
</form>

我正在努力为字段添加包装容器,以及如何设置字段 1 的默认值(默认情况下应检查)。如何使用 Django 做到这一点?谢谢你的帮助。

标签: djangodjango-forms

解决方案


你很亲密。您可以通过定义每个字段本身来更加动态地呈现表单。使用 Django内置模板标签来根据您的需要呈现表单,如下所示:

<div id="form-wrapper">

    <form method="POST" class="post-form" id="form-id">
     {% csrf_token %}

        <div id="field_1">{{ form.field_1 }}</div>
        <div id="field_2">{{ form.field_2 }}</div>

    </form>
</div>

这样,您可以分配单个 cssidsclasses根据需要对其进行样式设置。


推荐阅读