Ошибка в 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
]
Вернуться на верх