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

Rya*_*rah 6 css python forms django templates

我刚刚进入Django并阅读了一堆书,现在我正在构建我的第一个应用程序.当我在我的模板中渲染我的表格时使用...

{{ form.as_ul }}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将一些CSS应用到我的表单中.事实证明它很难看起来很好看.我想知道是否有更好的渲染和样式表单方式?

Gam*_*iac 8

好吧,有几个选项可以利用,如:

  1. form.as_p
  2. form.as_ul
  3. form.as_table

由您来决定您想要什么.至于使用CSS自定义它,看看他们如何在这里构建表单(取自django docs):

<form action="/contact/" method="post">
    {{ form.non_field_errors }}
    <div class="fieldWrapper">
        {{ form.subject.errors }}
        <label for="id_subject">Email subject:</label>
        {{ form.subject }}
    </div>
    <div class="fieldWrapper">
        {{ form.message.errors }}
        <label for="id_message">Your message:</label>
        {{ form.message }}
    </div>
    <div class="fieldWrapper">
        {{ form.sender.errors }}
        <label for="id_sender">Your email address:</label>
        {{ form.sender }}
    </div>
    <div class="fieldWrapper">
        {{ form.cc_myself.errors }}
        <label for="id_cc_myself">CC yourself?</label>
        {{ form.cc_myself }}
    </div>
    <p><input type="submit" value="Send message" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)

原始表单看起来像这样:

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField()
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,您只需访问表单元素即可

{{ form.<element_name>.<element_properties> }}

您可以将自己的CSS添加到labels或divs.完全取决于你决定你想做什么.另外,如果您想要使用Bootstrap 3格式化的表单,那么我建议您使用django-crispyformsdjango的扩展名.