我正在尝试使用Django Generic display views构建脚本。
我的urls.py
url(r'^page/(?P<pk>[0-9]+)/$', PageDetails.as_view(), name='page-details'),
我的views.py
class PageDetails(DetailView):
model = Pages
def get_context_data(self, **kwargs):
context = super(PageDetails, self).get_context_data(**kwargs)
return context
问题
如何在我的网址中设置多个<pk>
?
url(r'^page/(?P<pk>[0-9]+)/subpage/(?P<pk>[0-9]+)$', PageDetails.as_view(), name='page-details'),
在我的观看中,我需要从第一个和第二个<pk>
获取数据。
答案 0 :(得分:3)
将网址中的第二个pk
参数更改为其他参数,例如pk_alt
:
^page/(?P<pk>[0-9]+)/subpage/(?P<pk_alt>[0-9]+)$
url参数pk_alt
将在您的views函数中作为self.kwargs
字典的一部分提供,因此您可以使用以下命令访问它:
self.kwargs.get('pk_alt', '')
然后,您可以将视图更新为以下内容:
class PageDetails(DetailView):
model = Pages
def get_context_data(self, **kwargs):
context = super(PageDetails, self).get_context_data(**kwargs)
page_alt = Pages.objects.get(id=self.kwargs.get('pk_alt', ''))
context['page_alt'] = page_alt
return context
然后,您就可以使用{{ page_alt }}
答案 1 :(得分:0)
如果您在网址中需要两个参数,请尝试以下方法:
url(r'^page/(?P<pk_1>[0-9]+)/subpage/(?P<pk_2>[0-9]+)$', PageDetails.as_view(), name='page-details'),
然后,pk_1
和pk_2
可用kwargs