Python Slug和泛型视图

Python Slug和泛型视图,python,django,Python,Django,我有一个叫做blog和blog以及Post和Categories模型的应用程序 url(r'^(?P<slug>[-\w]+)/$', ListView.as_view( queryset=Post.objects.filter(category=4)[:5], template_name='blog.html')), url(r'^(?P[-\w]+)/$”,ListView.as\u视图( quer

我有一个叫做blog和blog以及Post和Categories模型的应用程序

url(r'^(?P<slug>[-\w]+)/$', ListView.as_view(
                    queryset=Post.objects.filter(category=4)[:5],
                    template_name='blog.html')),
url(r'^(?P[-\w]+)/$”,ListView.as\u视图(
queryset=Post.objects.filter(category=4)[:5],
模板(name='blog.html'),
我可以看到上面这样的代码

127.0.0.1/categories/php/

通过上面的url,我可以看到类别为4的5篇文章。我想要的是让它充满活力。。例如,python是类别3

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

我试过了,但不起作用。还有其他方法吗?

您可以创建自定义的
列表视图
,并在其中添加功能:

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()),
url(r'^(?P[-\w]+)/$,BlogListView.as_view()),

Django将只解析URL字符串/regex以确定它有哪些参数,您不能传递字符串/regex来过滤查询集的对象。

很抱歉,我是在视图中使用它还是创建一个名为BlogListView的自定义文件?您应该将
BlogPostView
放在
views.py
中,将URL配置放在
urls.py
.URL(r'^(?p[-\w]+)/$,BlogListView.as_view())中,那么这是错误的吗?因为我们叫BlogListView?与BlogPostView.as_view()不同的是,我不知道你在问什么,但是
BlogPostView.as_view()
类似于
ListView.as_view(…)
,只是参数和视图现在在一个单独的文件中,而不是
urls.py
。我只是在你的示例中看到了这一点,url(r'^(?P[-\w]+)/$,BlogListView.as_view()),但是这里没有BlogListView,它是BlogPostView.as_view())无论如何,我非常感谢您的帮助