Невозможно перенаправить пользователя на страницу входа после регистрации с помощью функции перенаправления в django - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь перенаправить пользователя на страницу входа после регистрации, и я получаю сообщение об ошибке возврата для входа не найдено

accounts / urls.py

from django.urls import path,include
from . import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('articles/', include('articles.urls')),
    path('accounts/', include('users.urls')),
    path('admin/', admin.site.urls),
]

users / urls.py

    from . import views

    app_name = 'users'

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

views.py

def register(request):
    form = RegisterForm()
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        print(request.POST)
        if form.is_valid():
            form.save()
            user = form.cleaned_data.get('username')
            messages.success(request, 'Account was create for ' + user)
            return redirect('login')
    return render(request, 'register.html', {'form': form})

Ошибка, которую я получил

NoReverseMatch в / accounts / register / Reverse для 'login' не найден. 'login' не является допустимой функцией просмотра или именем шаблона.

1 Ответ

1 голос
/ 03 мая 2020

Поскольку вы указали app_name, вам необходимо добавить префикс имени представления к этому app_name, поэтому оно должно быть redirect(<b>'users:</b>login'):

def register(request):
    form = RegisterForm()
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        print(request.POST)
        if form.is_valid():
            form.save()
            user = form.cleaned_data.get('username')
            messages.success(request, 'Account was create for ' + user)
            return redirect('<b>users:</b>login')
    return render(request, 'register.html', {'form': form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...