如何从 views.py urls.py 获得论点



所以,我目前正在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 视图中执行以下操作,我从 urls.pystore_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'

使用以下代码

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'])

最新更新