所以,我目前在Django中使用基于类的视图,我在urls.py
中有这个url调度程序。
urls.py
url(r'^(?P<store_domainKey>.*)/$', views.StoreDetailView.as_view(), name='detail'),
并且在views.py中我希望得到一个来自store_domainKey
的论证,它就像以下一样。
views.py
class StoreDetailView(DetailView):
model = Store
template_name = 'boutique/detail.html'
def get_queryset(self, store_domainKey):
store = ???
我想要做的是访问store_domainKey
函数中的get_queryset()
,以便在变量store
中分配值。我怎样才能做到这一点?
更新
我上面需要的原因是因为我试图将我的FBV改为CBV。我通过在FBV视图中执行以下操作,从urls.py获取store_domainKey
到views.py。
def detail(request, store_domainKey):
store = get_object_or_404(Store, domainKey=store_domainKey)
我也想在我的CBV视图中做同样的事情。但是,get_object_or404
无效。
它只会引发以下错误。
TypeError at /downeast/
get_queryset() missing 1 required positional argument: 'store_domainKey'
答案 0 :(得分:1)
使用以下代码
class StoreDetailView(DetailView):
model = Store
template_name = 'boutique/detail.html'
def get_queryset(self):
return Store.objects.filter(domainKey=self.kwargs['store_domainKey'])
您收到错误,因为get_queryset不接受任何参数或keword参数。
由于你的url没有任何pk变量,你应该覆盖get_object()方法,因为详细视图需要url中的pk参数或者它可以用作pk的任何参数。
def get_object(self, queryset=None):
return Store.objects.get(domainKey=self.kwargs['store_domainKey'])