繁体   English   中英

Django 作者的博客文章

[英]Django blog post by authors

我正在 django 3 中建立一个博客。我想按作者过滤所有帖子并在作者页面中显示结果。 我似乎无法弄清楚我的代码有什么问题。 请帮忙。 如果我能解释我的代码有什么问题,那将不胜感激。

视图.py

class AuthorPostListView(ListView):
    model = Post
    paginate_by = 5
    template_name = 'author_post.html'

    def get_queryset(self):
        return Post.objects.filter(author = self.request.user).order_by('created_on').reverse()

    def get_context_data(self):
        context = super(AuthorPostListView, self).get_context_data(**kwargs)
        context['authorpost_list'] = Post.objects.all()
        return context

模型.py

class Post(models.Model):
    title           = models.CharField(max_length=200)
    post_slug       = models.SlugField(max_length = 200, unique = True)
    body            = models.TextField()
    created_on      = models.DateTimeField(auto_now_add=True)
    last_modified   = models.DateTimeField(auto_now = True)
    author          = models.ForeignKey(
                        settings.AUTH_USER_MODEL,
                        on_delete=models.CASCADE,
                        related_name = 'blog_posts',
                        )
    post_picture    = models.ImageField(
                        upload_to = 'post_picture', 
                        null = True, 
                        blank = True,
                        default='/media/post_picture/2.jpg',
                        )
    approved_comment = models.BooleanField(default=True)
    tags            = TaggableManager()
    categories      = models.ManyToManyField('Category', related_name = 'posts')

    def approve(self):
        self.approved_comment = True
        self.save()

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post_detail', args=[str(self.id)])

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)

模板

{% for object in authorpost_list %}
    {{ object.title }}
{% endfor %}

网址.py

urlpatterns = [

    path('author_post/', views.AuthorPostListView.as_view(), name = 'author_posts'),
]

您正在使用获取上下文数据覆盖您想要的实际视图,因此您可以删除获取上下文方法并在模板中调用

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

或者你可以做

context['authorpost_list'] = Post.objects.filter(author = self.request.user).order_by('-created_on')

并以与您显示的方式相同的方式调用模板

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM