【问题标题】:Django custom Auth form. How to show error messagesDjango 自定义身份验证表单。如何显示错误信息
【发布时间】:2020-12-20 21:25:03
【问题描述】:

另一个 Django 表单问题 -.- 所以,我有这个工作得很好的表格,但它不会显示任何错误消息。我对自定义表单很陌生,所以我的问题是,我是否需要指定其他任何内容才能显示我的消息? Forms.py 文件

class UserLoginForm(AuthenticationForm):
error_css_class = "error"
def __init__(self,*args,**kwargs):
    super(UserLoginForm, self).__init__(*args,**kwargs)

username = forms.CharField(widget=forms.TextInput(
    attrs={'class': 'input','placeholder': 'Username','label':''}
))
password = forms.CharField(widget=forms.PasswordInput(
    attrs={'class': 'input','placeholder': 'Password','label':''}
))

HTML 文件:

{%block content%}
    <form class="form" method="POST">
        {% csrf_token %} 
        <fieldset class="form-group text-center text-uppercase">
            <h1 class="sign-in__header">Sign up</h1>
            {% for field in form %}
                <p>
                    
                    {{ field }}
                    {{ field.help_text }}
                </p>
            {% endfor %}
        </fieldset>
        <div class="form-group">
            <button class="submit" type="submit">Sign in</button>
        </div>
        {% for field in form %}
            <div>{{ field.errors}}</div>
        {% endfor %}
        </div>
    </form>
        
        </div>
    {%endblock content%}
        
    
    
          

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    试试这个:

    {% if form.errors %}
    {% for field in form %}
        {% for error in field.errors %}
            <p> {{ error }} </p>
        {% endfor %}
    {% endfor %}
    {% endif %}
    

    【讨论】:

      【解决方案2】:

      如果您在表单无效时仍然在同一个视图上,那么在模板中您可以通过像这样将它们传递给您的视图来访问此错误。

      def View(request):
          form = myForm(request.POST)
          if form.is_valid():
             return HttpResponseRedirect('/yourview/')
          return render(request, 'template.html', {'form': form})
      

      然后在模板中

      {% if form.errors %}
          {% for field in form %}
              {% for error in field.errors %}
                  <div class="alert alert-danger">
                      <strong>{{ error|escape }}</strong>
                  </div>
              {% endfor %}
          {% endfor %}
          {% for error in form.non_field_errors %}
              <div class="alert alert-danger">
                  <strong>{{ error|escape }}</strong>
              </div>
          {% endfor %}
      {% endif %}
      

      【讨论】:

        猜你喜欢
        • 2016-01-20
        • 2021-08-12
        • 2016-01-19
        • 1970-01-01
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多