2012-04-20 106 views
4

我正在使用Django標準身份驗證。/login在我的/urls.py中有以下loc。如果用戶調用www.myapp.com和登錄重定向到LOGIN_REDIRECT_URL = '/ PM/PO /我的/'(www.myapp.com/pm/po/my/)中定義Django - 身份驗證 - 重定向

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

登錄工作正常settings.py。

如果用戶關閉瀏覽器選項卡,則保持打開瀏覽器,會話不會被終止(=用戶未註銷)。這也很好。

但是,如果用戶然後打開一個新選項卡並轉至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', }), 

然而,這會導致以下錯誤信息:「此網頁有重定向循環」

--Solution--

網址.py:

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

settings.py

LOGIN_URL = '/login' 

回答

4

請勿使主頁URL指向登錄頁面。相反,根據需要使用login_required decorator將未登錄的用戶重定向到登錄頁面。

+0

謝謝。簡單而整潔的解決方案。在我的文章中添加了代碼。 – 2012-04-20 10:40:30

0

實現您自己的登錄網址視圖,並在用戶登錄時進行重定向(通常使用request.method ='POST'),或者該用戶已經獲得授權。