我正在使用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'
答案 0 :(得分:4)
不要将主URL指向登录页面。相反,请根据需要使用login_required
decorator将未登录的用户重定向到登录页面。
答案 1 :(得分:0)
为登录网址实施您自己的视图,并在用户登录时进行重定向(通常使用request.method ='POST'),或者此用户已经获得授权。