2012-03-30 58 views
2

在我的模板,我目前使用的next參數與此登錄頁面之前將用戶重定向回頁面:要停止一個重定向當登錄網址結尾註銷?下一= /帳號/註銷/ Django中

<a href="{% url auth_login %}?next={% firstof request.path '/' %}">Log in</a> 

firstof標籤可以確保萬一request.path是無效的,那麼它會重定向到根URL。

這種運作良好,每一頁上除了一個:註銷頁面。如果我想切換用戶,那我就先退出,然後單擊登錄。但後來我的網址是

http://127.0.0.1:8000/accounts/login/?next=/accounts/logout/ 

所以當我登錄,我會立即被重新登錄了一次。如何修改模板,以便用這樣的僞代碼:「未來= /」

if request.path and request.path != reverse('auth_logout') 
    return request.path 

return "/" 

回答

2

我能想到的最簡單的方法,就是添加您註銷URL,這樣一來,只要用戶註銷後,他將立即重定向到指定的URL,因此註銷時沒有人會永遠停留在註銷頁面上。

否則,你將不得不重新編寫登錄視圖,並添加您需要任何自定義邏輯,如果contrib.auth觀點是一流的意見,這是他們目前沒有不幸的是這將是更容易。

所以複製粘貼和修改:)(我知道,複製粘貼是壞的,但多數民衆贊成你可以添加自定義行爲的唯一途徑)。

該視圖位於此處: https://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L25