4

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

(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/我的/ 。

我怎样才能做到这一点?

我尝试添加以下行:

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

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

- 解决方案 -

网址.py:

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

设置.py

LOGIN_URL = '/login'
4

2 回答 2

4

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

于 2012-04-20T10:23:32.550 回答
0

实现您自己的登录 url 视图,并在您的用户登录(通常使用 request.method = 'POST')或该用户已经授权时进行重定向。

于 2012-04-20T10:24:43.983 回答