Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django未显示所有身份验证表单错误_Django_Django Allauth - Fatal编程技术网

Django未显示所有身份验证表单错误

Django未显示所有身份验证表单错误,django,django-allauth,Django,Django Allauth,我正在使用django allauth,每当我在登录表单中输入错误的密码时,页面就会重新加载,并且不会显示任何错误。这是我的html代码: <form class="login" method="POST" action="{% url 'account_login' %}"> {% if form.errors %} {% for field in form %} {% for error in field.e

我正在使用django allauth,每当我在登录表单中输入错误的密码时,页面就会重新加载,并且不会显示任何错误。这是我的html代码:

    <form class="login" method="POST" action="{% url 'account_login' %}">
                        {% if form.errors %}
    {% for field in form %}
    {% for error in field.errors %}
    <div class="alert alert-error">
   <span><b> {{error}} </b><span>
    </div>
    {% endfor %}
    {% endfor %}
    {% endif %}
  {% csrf_token %}

   <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
  {{ form.login }}
  <label class="mdl-textfield__label" for="id_login">Username/Email:</label>
  </div>
   <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
  {{ form.password }}
  <label class="mdl-textfield__label" for="id_password">Password</label>
  </div>

  <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="id_remember">
   {{form.remember}}<span class='mdl-checkbox__label 'align='left'>Remember me</span>
  </label></br>
  {% if redirect_field_value %}
  <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
  {% endif %}
  <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a><br/></br>
  <button class="mdl-button mdl-js-button  mdl-js-ripple-effect mdl-button--raised mdl-button--colored" type="submit">{% trans "Sign In" %}</button>
  <br/>
  <br/>
</form>
注册视图

class SignupView(RedirectAuthenticatedUserMixin, CloseableSignupMixin,
                 AjaxCapableProcessFormViewMixin, FormView):
    template_name = "account/signup." + app_settings.TEMPLATE_EXTENSION
    form_class = SignupForm
    redirect_field_name = "next"
    success_url = None

    @sensitive_post_parameters_m
    def dispatch(self, request, *args, **kwargs):
        return super(SignupView, self).dispatch(request, *args, **kwargs)

    def get_form_class(self):
        return get_form_class(app_settings.FORMS, 'signup', self.form_class)

    def get_success_url(self):
        # Explicitly passed ?next= URL takes precedence
        ret = (
            get_next_redirect_url(
                self.request,
                self.redirect_field_name) or self.success_url)
        return ret

    def form_valid(self, form):
        # By assigning the User to a property on the view, we allow subclasses
        # of SignupView to access the newly created User instance
        self.user = form.save(self.request)
        return complete_signup(self.request, self.user,
                               app_settings.EMAIL_VERIFICATION,
                               self.get_success_url())

    def get_context_data(self, **kwargs):
        ret = super(SignupView, self).get_context_data(**kwargs)
        form = ret['form']
        email = self.request.session.get('account_verified_email')
        if app_settings.SIGNUP_EMAIL_ENTER_TWICE:
            email_keys = ['email1', 'email2']
        else:
            email_keys = ['email']
        for email_key in email_keys:
            form.fields[email_key].initial = email
        login_url = passthrough_next_redirect_url(self.request,
                                                  reverse("account_login"),
                                                  self.redirect_field_name)
        redirect_field_name = self.redirect_field_name
        redirect_field_value = get_request_param(self.request,
                                                 redirect_field_name)
        ret.update({"login_url": login_url,
                    "redirect_field_name": redirect_field_name,
                    "redirect_field_value": redirect_field_value})
        return ret

signup = SignupView.as_view()
登录视图

class LoginView(RedirectAuthenticatedUserMixin,
                AjaxCapableProcessFormViewMixin,
                FormView):
    form_class = LoginForm
    template_name = "account/login." + app_settings.TEMPLATE_EXTENSION
    success_url = None
    redirect_field_name = "next"

    @sensitive_post_parameters_m
    def dispatch(self, request, *args, **kwargs):
        return super(LoginView, self).dispatch(request, *args, **kwargs)

    def get_form_kwargs(self):
        kwargs = super(LoginView, self).get_form_kwargs()
        kwargs['request'] = self.request
        return kwargs

    def get_form_class(self):
        return get_form_class(app_settings.FORMS, 'login', self.form_class)

    def form_valid(self, form):
        success_url = self.get_success_url()
        try:
            return form.login(self.request, redirect_url=success_url)
        except ImmediateHttpResponse as e:
            return e.response

    def get_success_url(self):
        # Explicitly passed ?next= URL takes precedence
        ret = (get_next_redirect_url(
            self.request,
            self.redirect_field_name) or self.success_url)
        return ret

    def get_context_data(self, **kwargs):
        ret = super(LoginView, self).get_context_data(**kwargs)
        signup_url = passthrough_next_redirect_url(self.request,
                                                   reverse("account_signup"),
                                                   self.redirect_field_name)
        redirect_field_value = get_request_param(self.request,
                                                 self.redirect_field_name)
        site = get_current_site(self.request)

        ret.update({"signup_url": signup_url,
                    "site": site,
                    "redirect_field_name": self.redirect_field_name,
                    "redirect_field_value": redirect_field_value})
        return ret

login = LoginView.as_view()

除了附加到特定字段的错误之外,请确保检查
{{form.non_field_errors}}

如果任何一个仍然有问题,那么您可以使用这个

{% if form.errors %}
{% for field in form %}
    {% for error in field.errors %}
        <div class="alert alert-error">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
    <div class="alert alert-error">
        <strong>{{ error|escape }}</strong>
    </div>
{% endfor %}
{% endif %}
{%if form.errors%}
{%形式的字段为%}
{%字段中有错误。错误%}
{{error | escape}}
{%endfor%}
{%endfor%}
{%表示表单中的错误。非\u字段\u错误%}
{{error | escape}}
{%endfor%}
{%endif%}

你能发布呈现
signup.html
的视图吗?@souldeux该视图不是我写的,它来自django allauthpackage@souldeux我在问题中已经上传了,我不确定,我对django allauth没有多少经验。我认为唯一有帮助的是检查模板中的
{{form.non_field_errors}}
。@souldex,它是正确的。您可以将其作为答案发布,这样我就可以勾选它。
{% if form.errors %}
{% for field in form %}
    {% for error in field.errors %}
        <div class="alert alert-error">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
    <div class="alert alert-error">
        <strong>{{ error|escape }}</strong>
    </div>
{% endfor %}
{% endif %}