Django如何按常用标签列出博客项目

2024-04-20 05:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个django/python初学者,正在编写一个基本的博客,并尝试按标签列出条目。我可以从管理面板添加标签到帖子中,但是还没有找到合适的代码来允许我按特定标签显示帖子。你知道吗

我曾尝试实现许多在线解决方案,但我只是列出了每一个帖子,没有帖子,或得到的错误。你知道吗

这是我的报告的相关部分型号.py地址:

... 
class Tag(models.Model):
    name = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)

    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    tags = models.ManyToManyField(Tag)
    updated_on = models.DateTimeField(auto_now=True)
    content = RichTextUploadingField(config_name="default", null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

视图:

...
class TagPage(generic.ListView):
        model = Tag
        template_name = 'tag_list.html'

和URL:

urlpatterns = [
    ...
    path('tag/<slug>/', views.TagPage.as_view(), name='tag')
]

如果有人对什么样的代码是必要的有任何想法,将不胜感激。你知道吗


Tags: 代码nameselftrueonmodelstag标签
2条回答

你知道吗网址.py你知道吗

path('tag/<int:tag_id>/', views.PostView.as_view() 

你知道吗视图.py你知道吗

class PostView(generic.ListView):
    model = Post

    def get_queryset(self, *args, **kwargs):
        qs = super().get)queryset(a*args, **kwargs)
        qs.filter(tags__id=int(self.kwargs['tag_id']))
        return qs

岗位_列表.html你知道吗

{% for object in object_list %}
   {{ object }}
{% endfor %}

首先,在应用程序的文件夹中创建一个名为serializers.py的文件。添加以下代码行:

from rest_framework import serializers
from .models import Tag
class TagSerializer(serializers.ModelSerializer):
    class Meta:
        Model = Tag
        fields = '__all__'

然后按如下方式编辑视图:

class TagView(generics.ListAPIView): 
    serializer_class = TagSerializer

    def get_queryset(self):
        slug = self.kwargs['slug']
        return Tag.objects.filter(slug=slug)

相关问题 更多 >