Ошибка в django KeyError в /accounts/register/

У меня возникла проблема. При переходе по ссылке http://127.0.0.1:8000/accounts/register / возвращается ошибка KeyError по адресу /accounts/register/ 'email'. Я программирую на django в pycharm

это код:

registration/urls.py:

from django.contrib.auth import views as auth_views
from django.urls import path
from . import views

urlpatterns = [
    path('/register', views.register, name='register'),
]

registration/views.py:

from django.shortcuts import render
from django.contrib.auth import login, authenticate
from django.shortcuts import render, redirect
from .forms import RegistrationForm
from django.shortcuts import render, redirect


def sign_up(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('home')
        else:
            form = RegistrationForm()
            return render(request, 'registration/register.html', {'form': form})


def register():
    print("hello!")

urls.py (В самом проекте):

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')),
    path('news/', include('news.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

register.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Регистрация</title>
</head>
<body>
    <h1>Регистрация</h1>
    <form method="post" action="{% url 'register' %}">
        {% csrf_token %}
        {{ form.email }}
        {{ form.password1 }}
        {{ form.password2 }}
        <button type="submit">Зарегистрироваться</button>
    </form>
</body>
</html>

forms.py:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class RegistrationForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['email'].label = 'Email address'
        self.fields['password1'].label = 'Password'
        self.fields['password2'].label = 'Confirm Password'


class Meta:
    model = User
    fields = ('email', 'password1', 'password2')

Я перепробовал множество видеороликов на YouTube и документации, но все равно

У вас есть приложение под названием "Регистрация".

В вашем проекте (верхнего уровня) urls.py не содержит ссылки на registration/url.py, поэтому url регистрации не известен

Вам нужно включить что-то вроде:

 path("registration/", include("registration.urls")),

Вы сможете использовать http://127.0.0.1:8000/registration/register

NB: Хотя вы можете попробовать установить путь к "accounts/" вместо этого, чтобы получить нужный вам URL. В настоящее время этот путь указывает на все URL-адреса аутентификации, такие как login и logout, так что, возможно, будет разумно держать их отдельно.

Вернуться на верх