2011-05-22 36 views
11

我想通過一個變量使用重定向函數,但它沒有返回任何值。Django中傳遞一個變量重定向

def one: 
    # define location variable here 
    return redirect(getting_started_info, location=location) 

def getting_started_info(request, location=''): 
    location = location 
    ... 

有人能告訴我爲什麼重定向中的變量沒有通過?

回答

9
return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location})) 
+1

我是否需要修改我的urls.py,因爲參數? – tilaprimera 2014-11-24 03:47:58

+9

這個答案實際上是一行代碼。你需要做更多的工作來解釋它爲什麼起作用,因爲這是一個希望學習的人,而不僅僅是讓事情成功。 – IIllIIll 2016-01-18 22:43:06

12

記住redirect()是不是做直接調用你的看法,它的實際發送客戶端的瀏覽器302 Found狀態(301 Moved Permanently如果使用permanent=True)的指令來重定向到一個不同的URL。在這種情況下,該URL是解析爲getting_started_info視圖的URL。

我相信爲了這個工作,必須存在一個urlconf,它映射到getting_started_view,它使用它的location位置參數。這很可能通過named groups發生。

從Django的1.8文檔entryredirect()

的參數可以是:

  • 模型:模型的get_absolute_url()函數將被調用。
  • 視圖名稱,可能帶有參數:urlresolvers.reverse將用於反向解析名稱。
  • 絕對或相對URL,它將用於重定向位置。
2

您也可以使用會話或cookie傳遞某個變量的值。