Я пишу приложение Django, и моя страница регистрации вызывает ошибку 403:
Запрещено (403)
Ошибка проверки CSRF. Запрос отменен.
Причина, указанная для сбоя:
Маркер CSRF отсутствует или неверен.
Вот представление:
def register(request):
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')
return render(request, "register.html", {'form' : form})
Вот Форма в соответствующем шаблоне:
{% block content %}
<form method="POST">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}
{{ field }}
</p>
{% endfor %}
<button type="submit" class="button">Register</button>
</form>
{% endblock %}
Некоторые важные факты:
(1) Никакие другие страницы на моем сайте не выдают эту ошибку, хотя многим требуются токены CSRF.
(2) Код, который я использую для вставки токена CSRF, в этом шаблоне такой же, как и в других (если только моя тройная проверка не подвела меня).
(3) [вероятно, уместно?] Это единственный Я импортирую форму непосредственно в views.py без предварительного изменения формы. Итак, две строки views.py:
from django.contrib.auth.forms import UserCreationForm
[...]
from foo.forms import FooForm, FooBarForm, UploadFooForm
Любая и вся помощь приветствуется. Я пробовал большинство из того, что я считаю очевидными шагами отладки (удаление строки {% csrf_token%}, чтение выходных данных отладки и обеспечение [я думаю] того, что эти проблемы не относятся ко мне, et c.) .
РЕДАКТИРОВАТЬ: я работаю в Django 3. Я видел другой вопрос и получил ответ о декораторе @csrf_exempt, но я считаю, что соответствующий декоратор больше не доступен в Django 3.