Django UserCreationForm не отвечает при нажатии на кнопку с вводом в поля
У меня проблемы с тем, чтобы заставить работать мое приложение для регистрации в Django. Я использую встроенную форму UserCreationForm. Я могу перейти по URL и форма отображается, но когда я ввожу информацию в поля и нажимаю кнопку отправки, ничего не происходит. Должно появиться окно ошибки, говорящее "отсутствует поле csrf_field" (я знаю это, потому что я следую руководству TechWithTim, и это то, что происходит с ним). Но когда я нажимаю кнопку "Регистрация", ничего не происходит.
views.py:
from django.shortcuts import render
from django.contrib.auth.forms import UserCreationForm
# Create your views here.
def register(response):
form = UserCreationForm()
return render(response, "register/register.html", {"form":form})
register.html:
{% extends "main/base.html" %}
{% block title %}Create an Account{% endblock %}
{% block content %}
<form method="POST" class="form-group">
{{form}}
<button type="submit" class="btn btn-success">Register</button>
</form>
{% endblock %}
urls.py:
from django.contrib import admin
from django.urls import path, include
from register import views as v
urlpatterns = [
path('', include("main.urls")),
path("register/", v.register, name="register"),
path('admin/', admin.site.urls),
]
Я также добавил приложение в свой файл settings.py.
Это мой первый вопрос здесь, и я пытался оформить его правильно, так что извините, если не получилось
Для того чтобы Django получил данные, введенные пользователем в форму, необходимо передать POST-данные запроса в форму, если она существует. Это будет выглядеть следующим образом:
form = UserCreationForm(response.POST)
Но обратите внимание, что response.POST
не будет существовать, если это не POST-запрос. (Например, если пользователь просматривает форму впервые.) В документации Django есть пример того, как обрабатывать данные формы.
В качестве альтернативы вы можете посмотреть учебник, который вы используете, в котором есть пример того, как получить данные POST из формы:
# views.py
from django.shortcuts import render, redirect
from .forms import RegisterForm
# Create your views here.
def register(response):
if response.method == "POST":
form = RegisterForm(response.POST)
if form.is_valid():
form.save()
return redirect("/home")
else:
form = RegisterForm()
return render(response, "register/register.html", {"form":form})
(Источник.)