Неправильно настроенный Django reverse_lazy

#python #django

#python #django

Вопрос:

После регистрации моего пользователя я хотел бы перенаправить его на страницу входа в систему. Однако reverse_lazy, похоже, не может найти мой путь для входа.

views.py

 from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import CreateView
from . import forms

# Create your views here.
class SignUpView(CreateView):
    form_class = forms.UserCreateForm
    template_name = 'accounts/signup.html'
    #Redirect login page once they have successfully signed up
    succes_url = reverse_lazy('login')
 

urls.py

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

from . import views

app_name = 'accounts'

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
    path('signup/', views.SignUpView.as_view(template_name='accounts/signup.html'), name='signup'),
]
 

Ответ №1:

Это потому, что вы указали an app_name = … , в этом случае вы добавляете к имени представления префикс пространства имен:

 class SignUpView(CreateView):
    # …
    success_url = reverse_lazy('accounts:login') 

Кроме того, вы допустили опечатку, это success_url [Django-doc], а не succes_url .

Комментарии:

1. Похоже, это не устраняет проблему.

2. @djo: вы также допустили опечатку, это success_url 🙂