Django - 带有 2 个参数的 URL 模板标签

歪斜

我是 Django 的新手,如果问题很愚蠢,我很抱歉。我有一个带有两个 slug 的 URL,一个用于属于 manytomany 字段的类别,另一个用于帖子:

path('<slug:slug_staticpage>/<slug:slug>/', views.post, name='post_detail')

视图.py

def post(request, slug, slug_staticpage):
    category = get_object_or_404(StaticPage, slug_staticpage=slug_staticpage)
    blogpost = get_object_or_404(Post, slug=slug)
    post = Post.objects.filter(slug=slug)
    page_id = category.pk
    related_posts = Post.objects.filter(static_page__pk=page_id)[:6]
    return render(request, "blog/blog-post-final.html", {'slug': slug, 'slug_staticpage': category.slug_staticpage, 'post':post, 'related_posts':related_posts})

模型.py

class Post(models.Model):
    title = models.CharField(max_length=300)
    content = RichTextField()
    slug = models.SlugField(max_length=200, unique=True)
    published = models.DateTimeField(verbose_name="Published", default=now())
    image = models.ImageField(verbose_name="Image", upload_to="blog", null=True, blank=True)
    author = models.ForeignKey(User, verbose_name="Author", on_delete=models.PROTECT)
    categories = models.ManyToManyField(Category, verbose_name="Categories", related_name="get_post")
    static_page = models.ManyToManyField(StaticPage, verbose_name="Página estática", related_name="get_post")
    created = models.DateField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.IntegerField(choices=STATUS, default=0)

我想通过模板标签在我的主页中显示这些 URL,但我不知道如何检索 slug_staticpage slug:

<a href="{% url 'blog:post_detail'  slug_staticpage=post.slug_staticpage slug=post.slug %}">

上面的语法不起作用,我只能检索帖子的slug。

有人可以帮我解决这个问题吗?非常感谢您的宝贵帮助:)

歪斜

歪斜

我通过将以下内容添加到 models.py 中自己解决了这个问题

def get_absolute_url(self):
   return reverse('blog:post_detail', kwargs={'slug_staticpage':self.static_page.slug_staticpage, 'slug':self.slug})

干杯!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章