【发布时间】:2018-05-11 18:41:13
【问题描述】:
所以,我目前在 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 = ???
我想做的是在我的get_queryset() 函数中访问store_domainKey 以在变量store 中分配值。我怎样才能做到这一点?
更新
我需要上面的原因是因为我试图将我的 FBV 更改为 CBV。通过在我的 FBV 视图中执行以下操作,我将 store_domainKey 从 urls.py 获取到 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'
【问题讨论】:
-
无法理解问题,你在哪里写了最后三行?在get函数中?您可以使用 self.kwargs['store_domainKey'] 在 get_queryset() 函数中访问 store_domainKey
-
@SHIVAM 很抱歉造成混乱!最后三行的第一行是错字。我现在更新了。顺便说一句,我放了
store = self.kwargs['store_domainKey'],但它抛出了get_queryset() missing 1 required positional argument: 'store_domainKey'的错误 -
你的 get_quertset 函数应该是 def get_queryset(self): not def get_queryset(self, store_domainKey):
标签: django django-class-based-views