【问题标题】:Django widget tweaks 'render_field' not workingDjango 小部件调整“render_field”不起作用
【发布时间】:2018-06-27 22:37:54
【问题描述】:

我在 django 中有这个表单渲染模板,而 render_fieldif-else 中不起作用:

{% load widget_tweaks %} 
{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }} 
        {% if form.is_bound %} 
            {% if field.errors %} 
                {% render_field field class="form-control is-invalid" %} 
                {% for error in field.errors %}
                    <div class="invalid-feedback">
                        {{error}}
                    </div>
                {% endfor %} 
            {% else %} 
                {% render_field field class="form-control is-valid" %} 
            {% endif %} 
        {% else %} 
            {% render_field field class="form-control" %} 
        {% endif %} 

        {% if field.help_text %}
            <small class="form-text text-muted">
               {{ field.help_text }}
            </small>
        {% endif %}
    </div>
{% endfor %}

它呈现这个:

但是当我尝试像下面这样的上述代码的较小版本时,它仍然不起作用:

{% load widget_tweaks %} 
{% for field in form %}
        <div class="form-group">

            {% if field.errors %}
                {% render_field field class="form-control is-invalid" %}
            {% else %}
                {% render_field field class="form-control is-valid" %}
            {% endif %}

            {% if field.help_text %}
                <small class="form-text text-muted">
                    {{ field.help_text }}
                </small>
            {% endif %}

        </div>
{% endfor %}

并渲染:

但是当我删除所有 if-else 时:

{% load widget_tweaks %} 
{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }} 
        {% render_field field class="form-control" %} 
        {% if field.help_text %}
            <small class="form-text text-muted">
               {{ field.help_text }}
            </small>
        {% endif %}
    </div>
{% endfor %}

然后正确渲染:

但我需要if-else 来检查表单错误并相应地添加错误消息到表单,将不胜感激任何帮助。 那么为什么 render_field 不能与 if-else 一起使用?如何解决这个问题?使用widget_tweaks 呈现错误的任何其他方式或widget_tweaks 的任何替代方式?

【问题讨论】:

    标签: python django django-forms jinja2 django-widget-tweaks


    【解决方案1】:

    您可以使用WIDGET_ERROR_CLASS 设置错误等级。

    {% with WIDGET_ERROR_CLASS='my_error_class' %}
        {% render_field form.field1 %}
        {% render_field form.field2 %}
        {% render_field form.field3 %}
    {% endwith %}
    

    然后你可以添加表单错误:

    {% if field.errors %}
        {% for error in field.errors %}
            <div class="invalid-feedback">
                {{error}}
            </div>
        {% endfor %} 
    {% endif %}
    

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 2020-05-22
      • 2018-08-09
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 2021-09-15
      • 2020-03-20
      • 2015-10-22
      相关资源
      最近更新 更多