Django:如何显示帖子查询的作者?

时间:2016-09-11 15:34:50

标签: python django

我试图为每位作者制作单独的页面,以显示他们的姓名和帖子。我似乎无法显示用户名。

views.py

class UserProfileView(generic.ListView):
    template_name = 'howl/user-profile.html'
    context_object_name = 'user_howls'

    def get_queryset(self):
        author = self.request.user
        u = User.objects.get(username=author)
        return Howl.objects.filter(author=u)

models.py

class Howl(models.Model):
    author = models.ForeignKey(User, null=True)
    content = models.CharField(max_length=150)

这就是我被困的地方。

用户profile.html

{% extends 'howl/base.html' %}

{% block content %}

<h1>User: {{user_howl.author}}</h1>

{% for user_howl in user_howls %}
<ul>
    <li>{{user_howl.content}}</li>
</ul>
{% endfor %}

{% endblock %}

内容显示得很好,但标题只是说&#34;用户:&#34;,如何在不使用for循环的情况下为其提供上下文? 我试过了:

{% for author in user_howls.author %}
<h1>User: {{author}}</h1>
{% endfor %}

{% if user_howls.author %}
<h1>User: {{user_howl.author}}</h1>
{% endif %}

结果相同,显示&#34;用户:&#34;

2 个答案:

答案 0 :(得分:3)

user_howls是一个查询集,因此它不具备author属性,您需要获取迭代对象的作者

{% for howl in user_howls %}
<h1>User: {{ howl.author}}</h1>
{% endfor %}

更重要的是,当你刚刚返回user_profile的结果时,从Howl列表开始是没有意义的,使用{{1}也没有意义}}。所以相反,从用户开始,然后查找它的嚎叫

ListView

答案 1 :(得分:1)

由于您的查询集基于属于当前用户的帖子,因此您可以快速完成所有这些操作并直接向用户显示:

User: {{ user }}