Django как зарегистрировать страницу loge с идентификатором

#django #django-views

#django #django-просмотры

Вопрос:

Я новичок в Django и пробовал существующие ответы, но у меня не получилось. Я был бы признателен за вашу помощь!

Я могу легко попасть на общую страницу при входе на сайт, но как мне перейти к своему профилю при входе в систему?

 def login(request, pk=0):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = auth.authenticate(username=username, password=password)
        try:
            remember = request.POST['remember_me']
            if remember:
                settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = False
        except:
            is_private = False
            settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = True

        if user is not None:
            auth.login(request, user)
            
            return redirect('/')
        else:
            messages.info(request, 'invalid credentials')
            return redirect('login')
    else:
        return render(request, 'registration/login.html')
 

urls.py

  path('profile/<int:pk>/', views.profiles, name='profile'),
 

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

1. с какой ошибкой вы столкнулись

2. я не получаю ошибку, я хочу, чтобы сразу после входа в систему открывалась страница профиля пользователя, URL-адрес которой с <int:id>, теперь после входа пользователя в систему отображается общий URL-адрес страницы ‘/’

3. @MrHow, используйте это: redirect('profile', pk=user.pk) .

Ответ №1:

Вы также можете использовать функцию redirect ():

 if user is not None:
    auth.login(request, user)
    
    return redirect('profile', pk=user.pk)
 

Путем передачи имени представления и, при необходимости, некоторых позиционных или ключевых аргументов; URL-адрес будет разрешен в обратном порядке с использованием метода reverse():

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

1. к сожалению, я не понимаю, как. У пользователя есть атрибут pk, кроме id?

2. да, см. Автоматические поля первичного ключа