2013-12-19 33 views
0

我一直試圖在django通用視圖中使用「UpdateView」。我試圖實現的是返回到相同的「UpdateView」頁面。 我的代碼如下:
我的網址get_success_url在URL末尾產生「無」

#urls.py  
urlpatterns = patterns(
    '', 
    url(r'^code/(?P<pk>\d+)/update/', CodeUpdate.as_view(model=Code, template_name='code_update.html'),name='update',), 
    ) 

我的看法

#views.py 
class CodeUpdate(UpdateView): 
    def get_success_url(self): 
     pass 

點擊更新按鈕,我希望以後的目標是

/碼/ 18 /更新/

但它原來是

/碼/ 18 /更新/無

如何刪除 「無」 在結束了嗎?謝謝。

現在,如果我這樣做:

#views.py 
class CodeUpdate(UpdateView): 
    def get_success_url(self): 
     return reverse('update') 

我會得到這個錯誤。

未找到參數'()'和關鍵字參數'{}'的'update'反向。 1模式嘗試:[u'/ code /(?p \ d +)/ update /']

如何在反向函數中傳遞'pk'值作爲參數。

謝謝。

回答

1

更新成功後,它將重定向到由get_success_url()返回的網址。由於您未在該功能中返回任何內容,因此您將被重定向到.../update/None

從該方法返回適當的URL或刪除該方法的默認行爲。

+0

你是對的。默認行爲是重定向到更新對象的'get_absolute_url'方法的結果,這可能不是OP所要查找的結果。要重新定向到對象的更新視圖,請爲URL模式指定一個名稱。然後使用'reverse'來查找它的URL並從'get_success_url'返回它。 –

+0

如果'success_url'爲'None',則會調用'get_absolute_url'。 – iMom0

+0

嗨@PeterDeGlopper。我試圖讓object.id作爲反向函數的參數。它工作,如果我硬編碼到'reverse('update',args =(11,))',我該怎麼做動態。謝謝。 – elvinado