Ошибка в 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, так что, возможно, будет разумно держать их отдельно.