2011-11-08 42 views
2

當用戶登錄到Django應用程序時,如何更改登錄後顯示的頁面的URL? 我目前有以下幾種觀點:如何更改我在Django中重定向的位置的固定鏈接?

def users_login(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
    login(request, user) 
    return HttpResponseRedirect("/start/") 

我指出應用程序應該重定向到domain.com/start/,但不幸的是,事實並非如此。它會轉到domain/login /,它是登錄表單的action屬性中的位置。

當我有我的看法如下代碼:

return redirect('http://www.google.com/') 

我得到一個錯誤。我不明白爲什麼。它只發生在形式上。用戶提交表單後,即使相應的視圖有重定向到靜態頁面,該URL仍停留在操作屬性的URL處。

+0

你確定它沒有?我相信它首先重定向到「/ start /」,然後是「domain/login /」。用Firebug進行檢查。 – DrTyrsa

+0

你好,它不會重定向到/開始/然後到域/登錄/。 – egidra

回答

1

尤金·索爾達托夫是正確的,

LOGIN_REDIRECT_URL = '/start' 

,但你應該使用built-in login view,使其工作(你無論如何都應該使用它)。

+0

我如何將其推廣到所有形式?當用戶創建新帖子時,該URL仍然是表單操作屬性的網址,但我希望它成爲新帖子的固定鏈接。 – egidra

+0

@egidra在Django中沒有這樣的問題。只需使用'HttpResponseRedirect'或更好['重定向'](https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect),一切都會好起來的。 – DrTyrsa

+0

我目前使用HttpResponseRedirect,但是當用戶提交一個表單時,URL就是表單action屬性的值。 – egidra

2

就在這個字符串添加到您的settings.py:

LOGIN_REDIRECT_URL = '/start/'