Django - 登录并重定向到用户个人资料页面 [英] Django - Login and redirect to user profile page

查看:173
本文介绍了Django - 登录并重定向到用户个人资料页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



这个问题已经被问了几次,但是大多数使用静态网址,如 / accounts / profile / Django - 登录后,将用户重定向到他的自定义页面 - > mysite.com/username 。我想使用动态url命名来实现这个解决方案。



例如,如果我的帐户登陆页面具有以下网址格式?

  url(r'^ account /(?P< pk> \d +)/(?P< name> \w +)/ $',AccountLanding.as_view(),name =account-landing `。 

如何在 settings.py for LOGIN_REDIRECT_URL

解决方案

无法使用 LOGIN_REDIRECT_URL 中的动态参数(例如登录用户的主键)。



一个工作是创建一个重定向到您的着陆页的视图:

  from django.contrib.auth.decorators import login_required 
from django .shortcuts import redirect

@login_required
def account_redirect(request):
return redirect('account-landing',pk = request.user.pk,name = request.user .username)

为此视图创建一个网址格式:

  urlpatterns = [
url(r'^ account / $',account_redirect,name ='account-redirect'),
]

然后将该视图用作 LOGIN_REDIRECT_URL

  LOGIN_REDIRECT_URL ='account-redirect'


I am trying to redirect a user who just logged in to his/her's respective account page.

This question has been asked a few times, but most of them are old and use static urls like /accounts/profile/: Django - after login, redirect user to his custom page --> mysite.com/username. I would like to use dynamic url naming to achieve this solution.

For example, what if my account landing page has the following url pattern?

url(r'^account/(?P<pk>\d+)/(?P<name>\w+)/$', AccountLanding.as_view(), name="account-landing" )`.

How would I pass the args in settings.py for LOGIN_REDIRECT_URL?

解决方案

It isn't possible to use dynamic arguments (e.g. the primary key of the logged in user) in the LOGIN_REDIRECT_URL.

One work around is to create a view that redirects to your landing page:

from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect

@login_required
def account_redirect(request):
    return redirect('account-landing', pk=request.user.pk, name=request.user.username)

Create a url pattern for this view:

urlpatterns = [
    url(r'^account/$', account_redirect, name='account-redirect'),
]

Then use that view as LOGIN_REDIRECT_URL:

LOGIN_REDIRECT_URL = 'account-redirect'

这篇关于Django - 登录并重定向到用户个人资料页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆