单击标签时显示帖子(django)
Show posts when clicking on a tag (django)
我是django的新手,我遇到了一个我无法解决的问题。
我正在创建一个博客,我希望能够点击一个标签并转到一个新页面,该页面将包含所有带有该标签的帖子。我已经创建了一个页面,其中包含 selected 标签作为 url 中的 slug,但我不知道如何在此页面上显示所有带有该标签的帖子。
我的模型页面:
class Tag(models.Model):
caption = models.CharField(max_length=30)
tag_slug = models.SlugField(unique=True, db_index=True, null=True)
class Post(models.Model):
title = models.CharField(max_length = 150)
image_name = models.CharField(max_length=100)
slug = models.SlugField(unique=True, db_index=True)
tags = models.ManyToManyField(Tag)
我的 url 页面:
urlpatterns = [
path("", views.starting_page, name = "starting-page"),
path("posts", views.posts, name = "posts-page"),
path("posts/<slug:slug>", views.post_detail, name = "posts-detail-page"),
path("posts/tag/<slug:tags>", views.post_tag, name = "post-tag-page"),
]
以及我创建的渲染函数:
def post_tag (request, tags):
identified_tag = get_object_or_404(Tag, tag_slug=tags)
return render (request, "blog/post-tags.html")
我使用此功能来呈现页面,但我不知道如何select(并呈现)所有具有特定标签的帖子(准确地说是它们的图像)。
您可以通过以下方式检索帖子:
def post_tag (request, tags):
posts = Post.objects.filter(<strong>tags__tag_slug=tags</strong>)
return render (request, 'blog/post-tags.html', {'posts': posts})
此处 posts
是一个 QuerySet
,所有 Post
的标签都带有 tag_slug
tags
URL 参数.
您应该查询所有带有指定标签的帖子,并通过上下文将其传递给模板
def post_tag (request, tags):
identified_tag = get_object_or_404(Tag, tag_slug=tags)
posts = Post.objects.filter(tag=identified_tag).all()
return render(request, "blog/post-tags.html", {"posts": posts})
在您的模板中,您可以访问这样的帖子
{% for post in posts %}
{{ post.title }}
{% endfor %}
我是django的新手,我遇到了一个我无法解决的问题。
我正在创建一个博客,我希望能够点击一个标签并转到一个新页面,该页面将包含所有带有该标签的帖子。我已经创建了一个页面,其中包含 selected 标签作为 url 中的 slug,但我不知道如何在此页面上显示所有带有该标签的帖子。 我的模型页面:
class Tag(models.Model):
caption = models.CharField(max_length=30)
tag_slug = models.SlugField(unique=True, db_index=True, null=True)
class Post(models.Model):
title = models.CharField(max_length = 150)
image_name = models.CharField(max_length=100)
slug = models.SlugField(unique=True, db_index=True)
tags = models.ManyToManyField(Tag)
我的 url 页面:
urlpatterns = [
path("", views.starting_page, name = "starting-page"),
path("posts", views.posts, name = "posts-page"),
path("posts/<slug:slug>", views.post_detail, name = "posts-detail-page"),
path("posts/tag/<slug:tags>", views.post_tag, name = "post-tag-page"),
]
以及我创建的渲染函数:
def post_tag (request, tags):
identified_tag = get_object_or_404(Tag, tag_slug=tags)
return render (request, "blog/post-tags.html")
我使用此功能来呈现页面,但我不知道如何select(并呈现)所有具有特定标签的帖子(准确地说是它们的图像)。
您可以通过以下方式检索帖子:
def post_tag (request, tags):
posts = Post.objects.filter(<strong>tags__tag_slug=tags</strong>)
return render (request, 'blog/post-tags.html', {'posts': posts})
此处 posts
是一个 QuerySet
,所有 Post
的标签都带有 tag_slug
tags
URL 参数.
您应该查询所有带有指定标签的帖子,并通过上下文将其传递给模板
def post_tag (request, tags):
identified_tag = get_object_or_404(Tag, tag_slug=tags)
posts = Post.objects.filter(tag=identified_tag).all()
return render(request, "blog/post-tags.html", {"posts": posts})
在您的模板中,您可以访问这样的帖子
{% for post in posts %}
{{ post.title }}
{% endfor %}