我有一个名为博客和博客以及帖子和类别模型的应用。
url(r'^(?P<slug>[-\w]+)/$', ListView.as_view(
queryset=Post.objects.filter(category=4)[:5],
template_name='blog.html')),
我可以看到上面这样的代码
127.0.0.1/categories/php /
上面的网址,我可以看到5篇与第4类的文章。我想要的是让它变得动态。例如,python是第3类
queryset=Post.objects.filter(category='P<pk>\d')[:5]
我尝试了这个但是没有用。还有别的吗?
答案 0 :(得分:2)
您可以创建自定义ListView
并在其中添加功能:
class BlogPostView(ListView):
template_name = 'blog.html'
def get(self, request, *args, **kwargs):
slug = kwargs.get('slug')
slug_id = ... # code here to determine id of slug's category
self.queryset = Post.objects.filter(category=slug_id)[:5]
return super(BlogPostView, self).get(request, *args, **kwargs)
使用以下URL配置:
url(r'^(?P<slug>[-\w]+)/$', BlogListView.as_view()),
Django只会解析URL字符串/正则表达式以确定它具有哪些参数,你不能传递字符串/正则表达式来过滤查询集的对象。