2013-11-24 61 views
1

我有一類基於Django的看法:在基於類的視圖中獲取kwargs的最佳方式?

class LocationView(TemplateView): 

我在我的網址調度定義的命名參數:

url(r'^locations/(?P<id>\d+)/$', LocationView.as_view(), name="location") 

我知道我可以訪問我的id參數在一個類的方法一樣get_context_data,在那裏我可以將** kwargs傳遞給方法本身。不過,我希望能夠在類中訪問參數,因爲我從API中獲取了一些數據,這些數據將在整個課程中以不同方法以不同方式使用。有沒有辦法做到這一點?

+1

「類內本身」,這是哪裏?你想用哪種方法訪問'id'? –

回答

3

您可以在您使用的任何方法中執行self.kwargs,該方法在爲基於類的視圖調用dispatch()之後運行。

如果你正在爲模型做一個細節視圖,就好像你正在做的那樣,你應該使用其中一個基於類的視圖,它會爲你做這件事。

你爲什麼不嘗試以下方法:

from django.views.generic import DetailView 

class LocationView(DetailView): 
    queryset = LocationModel.objects.all() 
    template_name = 'location_of_detail_template.html' 

然後更新您的urls.py文件,並從ID改變正則表達式組的名稱去PK,使這一切工作自動完成。

相關問題