Ошибка проверки CSRF в стандартном шаблоне проекта VS Django - PullRequest
1 голос
/ 13 июня 2019

У меня ошибка проверки CSRF после входа в систему в стандартном шаблоне проекта Django VS2019

В стандартном проекте Django у меня есть форма входа

<form action="." method="post" class="form-horizontal">{% csrf_token %}
<h4>Use a local account to log in.</h4>
<hr />
<div class="form-group">
<label for="id_username" class="col-md-2 control-label">User name</label>
<div class="col-md-10">{{ form.username }}
</div>
</div>
div class="form-group">
<label for="id_password" class="col-md-2 control-label">Password</label>
<div class="col-md-10">{{ form.password }}
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="hidden" name="next" value="/" />
<input type="submit" value="Log in" class="btn btn-default" />
</div>
</div>
{% if form.errors %}
<p class="validation-summary-errors">Please enter a correct user name and password.</p>
{% endif %}
</form>

urls.py

    path('login/',
         LoginView.as_view
         (
             template_name='app/login.html',
             authentication_form=forms.BootstrapAuthenticationForm,
             extra_context=
             {
                 'title': 'Log in',
                 'year' : datetime.now().year,
             }
         ),
         name='login'),

и forms.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import ugettext_lazy as _

class BootstrapAuthenticationForm(AuthenticationForm):
    """Authentication form which uses boostrap CSS."""
    username = forms.CharField(max_length=254,
                               widget=forms.TextInput({
                                   'class': 'form-control',
                                   'placeholder': 'User name'}))

    password = forms.CharField(label=_("Password"),
                               widget=forms.PasswordInput({
                                   'class': 'form-control',
                                   'placeholder':'Password'}))

После того, как я попытаюсь войти, я дал Запрет (403) CSRF verification failed. Request aborted. Хотя отправляется значение csrfmiddlewaretoken.

Мне также интересно, где именно BootstrapAuthenticationForm встроен в login.html?Я не вижу никаких упоминаний BootstrapAuthenticationForm в login.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...