Ошибка в django 404 Страница не найдена (404) Метод запроса: GET
При нажатии на эту ссылку: http://127.0.0.1:8000/accounts/register выдает ошибку 404, не знаю что с ней делать Вот код:
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)
Я перепробовал множество видеороликов и документации на YouTube, но все четно
- я не достиг 50 репутации, чтобы комментировать
на вашем urls.py, если вы поместите
urlpatterns = [
path('/register', views.register, name='register'), ]
и использовать что-то вроде
urlpatterns = [
path('register/', views.register, name='register'), ]
я думаю, что это ошибка, вам нужно только изменить бар с /register
на 'register/'
Надеюсь, вы найдете это полезным:
Конфигурация URL:
В файле registration/urls.py вы определили путь для регистрации как '/register', но в файле views.py вы назвали соответствующую функцию как sign_up
, а не register
. Это может быть причиной проблемы.
URL в URL-адресах проекта:
В главном файле urls.py вашего проекта вы включаете URL-адреса учетных записей, используя django.contrib.auth.urls
. Сюда входят стандартные URL для входа в систему, выхода из нее, сброса пароля и т. д. Однако вам нужно убедиться, что ваш пользовательский регистрационный URL также включен. В настоящее время у вас нет прямой ссылки на регистрационный URL.
Мой совет:
Обновите файл registration/views.py, чтобы имя функции совпадало с именем, определенным в вашем urls.py:
def register(request): # Change function name to match the URL pattern
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})
обновите файл registration/urls.py, чтобы убрать ведущую косую черту из пути:
urlpatterns = [
path('register/', views.register, name='register'), # Remove leading slash from '/register'
]
убедитесь, что главный файл urls.py вашего проекта включает урлы из приложения регистрации:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
path('news/', include('news.urls')),
path('accounts/', include('django.contrib.auth.urls')), # Include default auth URLs
path('accounts/', include('registration.urls')), # Include your custom registration URLs
]