0

我有一个名为 blog 和 blog 以及 Post and Categories 模型的应用程序。

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/

使用上面的 url,我可以看到 5 篇分类为 4 的文章。我想要什么让它动态化。例如,python 是第 3 类

queryset=Post.objects.filter(category='P<pk>\d')[:5]

我试过这个但不工作。还有什么办法吗?

4

1 回答 1

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 字符串/正则表达式以确定它具有哪些参数,您不能传递字符串/正则表达式来过滤查询集的对象。

于 2012-06-16T11:31:47.617 回答