Django - 身份验证 - 重定向

时间:2012-04-20 10:17:29

标签: django

我正在使用Django标准身份验证。 / login在我的/urls.py中有以下loc。

(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

如果用户拨打www.myapp.com并登录重定向到settings.py中定义的LOGIN_REDIRECT_URL ='/ pm / po / my /'(www.myapp.com/pm/po/my/),则登录正常。

如果用户关闭浏览器选项卡,则打开浏览器,会话未被终止(=用户未注销)。哪个也没关系。

但是,如果用户随后打开一个新标签并转到www.myapp.com,则会再次显示登录视图,同时该用户已经登录。在此我希望用户已重定向到www.myapp.com/pm / po / my /。

我怎样才能做到这一点?

我尝试添加以下行:

(r'^$', 'myapp.project_management.views.projects'),
(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

然而,这会导致以下错误消息:“此网页具有重定向循环”

- 解决方案 -

urls.py:

(r'^$', 'myapp.project_management.views.my_projects'),
(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

settings.py

LOGIN_URL = '/login'

2 个答案:

答案 0 :(得分:4)

不要将主URL指向登录页面。相反,请根据需要使用login_required decorator将未登录的用户重定向到登录页面。

答案 1 :(得分:0)

为登录网址实施您自己的视图,并在用户登录时进行重定向(通常使用request.method ='POST'),或者此用户已经获得授权。