为了账号安全,请及时绑定邮箱和手机立即绑定

在 url 中组合多个 slug

在 url 中组合多个 slug

弑天下 2021-12-08 11:10:22
我正在尝试使用两个 slug 来生成一种帖子的网址。我的网站按类别划分,每个人都有一个或多个帖子。视图.pydef singlePost(request, slug_post):    blogpost = get_object_or_404(BlogPost, slug_post=slug_post)    context = {"blogpost": blogpost}    return render(request, "blog/single_post.html", context)def singleCategory_postList(request, slug_category):    category = get_object_or_404(Category, slug_category=slug_category)    blogpost = BlogPost.objects.filter(category=category)    context = {            "category": category,            "blogpost": blogpost,            }    return render(request, "blog/single_category.html", context)我使用的 urls.pypath("category/<slug:slug_category>/", views.singleCategory_postList, name="single_category"),path("<slug:slug_post>/", views.singlePost, name='single_blog_post'),我想使用的 urls.pypath("<slug:slug_category>/", views.singleCategory_postList, name="single_category"),path("<slug:slug_category>/<slug:slug_post>/", views.singlePost, name='single_blog_post'),当我使用第二对路径时,它显示给我:NoReverseMatch 在 /blog/gis/反向使用关键字参数 '{'slug_post': 'rete-dei-sottoservizi-quadro-normativo'}' 未找到'single_blog_post'。尝试了 1 个模式:['blog\/(?P[-a-zA-Z0-9_]+)\/(?P[-a-zA-Z0-9_]+)\/$']模型.pyclass Category(models.Model):    category_name = models.CharField(                        max_length=50,                        verbose_name="Categorie",                        help_text="Every category must be not longer then 50 characters",                        unique=True,                        )    slug_category = models.SlugField(                verbose_name="Slug",                unique=True,                help_text="Slug is a field in autocomplete mode, but if you want you can modify its contents",                )....在这个答案中解释了如何做与我尝试做的相同的事情,但对于我的情况,它不能正常工作,我不明白为什么。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

但是就像你说的,URL 包含两个 slug,所以你需要在反向调用中传递它们。并且您需要使用在 URL 模式本身中使用的相同名称。

return reverse("single_blog_post", kwargs={"slug": self.slug_post, "slug_category": self.category.slug_category})



查看完整回答
反对 回复 2021-12-08
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

我通过进一步的更改解决了我的问题。


这是新的 singlePost 函数:


def singlePost(request, slug_post, slug_category):

    category = get_object_or_404(Category, slug_category=slug_category)

    blogpost = get_object_or_404(BlogPost, slug_post=slug_post)

    category_blogpost = BlogPost.objects.filter(category=category)

    context = {"category": category, "blogpost": blogpost, "category_blogpost": category_blogpost}

    return render(request, "blog/single_post.html", context)

以下是 Daniel Roseman 的代码:


return reverse("single_blog_post", kwargs={"slug_post": self.slug_post, "slug_category": self.category.slug_category})

现在我可以在我的网站中使用两个 slugs


查看完整回答
反对 回复 2021-12-08
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信