python 精细化控制Django表单外观

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 精细化控制Django表单外观相关的知识,希望对你有一定的参考价值。

{% load form_tags widget_tweaks %}

{% if form.non_field_errors %}
  <div class="alert alert-danger" role="alert">
    {% for error in form.non_field_errors %}
      <p{% if forloop.last %} class="mb-0"{% endif %}>{{ error }}</p>
    {% endfor %}
  </div>
{% endif %}

{% for field in form %}
  <div class="form-group">
    {{ field.label_tag }}
    {% render_field field class=field|input_class %}
    {% for error in field.errors %}
      <div class="invalid-feedback">
        {{ error }}
      </div>
    {% endfor %}
    {% if field.help_text %}
      <small class="form-text text-muted">
        {{ field.help_text|safe }}
      </small>
    {% endif %}
  </div>
{% endfor %}
from django import template

register = template.Library()

@register.filter
def field_type(bound_field):
    return bound_field.field.widget.__class__.__name__

@register.filter
def input_class(bound_field):
    css_class = ''
    if bound_field.form.is_bound:
        if bound_field.errors:
            css_class = 'is-invalid'
        elif field_type(bound_field) != 'PasswordInput': # password 不能为valid
            css_class = 'is-valid'
    return 'form-control {}'.format(css_class)

以上是关于python 精细化控制Django表单外观的主要内容,如果未能解决你的问题,请参考以下文章

html 通过Django的部件,调整自定义表单外观

统一 Django 表单媒体

链接、表单和 DOM 元素的 ACL 和外观操作

Django AJAX - 建议

python django Form表单

django官方demo翻译简化版 七(demo终)