#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. да, см. Автоматические поля первичного ключа