网站建设资讯

NEWS

网站建设资讯

创新互联Django4.0教程:Django4.0使用表单-使用表单模板

您只需将表单实例放到模板的上下文中即可。因此,如果您的表单在上下文中叫 ​form ​,那么 ​{{ form }}​ 将渲染它相应的 ​​和​​元素。

公司主营业务:网站建设、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出北川羌族免费做网站回馈大家。

表单渲染选项

对于 ​​ / ​​ 对,还有其他输出选项:

  • {{ form.as_table }}​ 会将它们呈现为包裹在 ​​ 标签中的表格单元格
  • {{ form.as_p }}​ 会将它们呈现在 ​

    ​ 标签中

  • {{ form.as_ul }}​ 会将它们呈现在 ​
  • ​ 标签中

注意,您必须自己提供外层的 ​

​ 或 ​
    ​ 元素。
    下面是我们 ​ContactForm ​实例用​ {{ form.as_p }}​ 的输出:

    请注意,每个表单字段都有一个 ​id_​ 这样的ID属性,它被附带的​label​标签引用。这对于确保表单可供屏幕阅读软件这样的辅助技术访问非常重要

    手动渲染字段

    我们没有必要非要让Django来解包表单字段;如果我们喜欢,可以手动来处理(比如,让我们对字段重新排序)。每个字段都可以用 ​{{ form.name_of_field }}​ 作为表单的一个属性,并被相应的渲染在Django模板中。例如:

    {{ form.non_field_errors }}
    
    {{ form.subject.errors }} {{ form.subject }}
    {{ form.message.errors }} {{ form.message }}
    {{ form.sender.errors }} {{ form.sender }}
    {{ form.cc_myself.errors }} {{ form.cc_myself }}

    完整的 ​​ 元素还可以使用 ​label_tag()​ 来生成。例如:

    {{ form.subject.errors }} {{ form.subject.label_tag }} {{ form.subject }}

    渲染表单错误信息

    这种灵活性的代价需要多做一点工作。到目前为止,我们不必担心如何显示表单的错误信息,因为它们已经帮我们处理好了。下面的例子中,我们需要自己处理每个字段的错误信息以及表单整体的所有错误信息。注意表单顶部的 ​{{ form.non_field_errors }}​ 以及模板中对每个字段查找错误信息。

    使用 ​{{ form.name_of_field.errors }}​ 显示该字段的错误信息列表,它被渲染成无序列表。看起来如下:

    • Sender is required.

    该列表有一个CSS class ​errorlist ​,允许您自定义其样式。如果你想进一步自定义错误信息的显示,您可以通过遍历它们来实现:

    {% if form.subject.errors %}
        
      {% for error in form.subject.errors %}
    1. {{ error|escape }}
    2. {% endfor %}
    {% endif %}

    非字段验证错误信息(或者通过使用像 ​form.as_p()​ 这样的辅助方法渲染产生在表单顶部的隐藏错误信息)渲染后会额外带上一个class ​nonfield ​以便与字段验证错误信息区分。例如, ​{{ form.non_field_errors }}​ 渲染后会像这样:

    • Generic validation error

    遍历表单字段

    如果您要给每个表单字段使用相同的HTML,您可以用 ​{% for %}​ 依次循环遍历每个字段来减少重复代码:

    {% for field in form %}
        
    {{ field.errors }} {{ field.label_tag }} {{ field }} {% if field.help_text %}

    {{ field.help_text|safe }}

    {% endif %}
    {% endfor %}

    {{ field }} 的有用属性包括:

    {{ field.label }}

    字段的​label​,比如 ​Email ​​address​。

    {{ field.label_tag }}

    该字段的​label​封装在相应的HTML ​​ 标签中。它包含表单的 ​label_suffix ​。例如,默认的 ​label_suffix ​是一个冒号:

    {{ field.id_for_label }}
    用于该字段的 ID(像上面的例子中的 id_email )。如果您要手动构建label,您可能要用这个来替换 label_tag 。例如,如果你有一些内嵌的JavaScript并且想要避免硬编码字段的ID,这也很有用。
    {{ field.value }}
    字段的值。例如 someone@example.com
    {{ field.html_name }}
    字段名称:用于其输入元素的name属性中。如果设置了表单前缀,它也会被加进去。
    {{ field.help_text }}
    与该字段关联的帮助文本
    {{ field.errors }}
    输出一个 ​