Django无法访问无法访问使用模板中创建的变量在上下文中传递的dicitionary

时间:2018-05-25 06:00:35

标签: django django-templates

我正在通过制作新闻源网站来练习Django。在我的新闻源页面中,我想在like按钮上的帖子上显示喜欢的数量。请参阅下面的两个代码块 -

  
      
  1. views.py - 在这里,我将所有帖子都放在all_posts中,然后循环播放帖子,从模特中的喜欢表中获取此帖子的总喜欢数(如果有更好的方法请提示)进入喜欢的词典。
  2.   
all_posts = NewsFeed.objects.all().order_by('time').reverse()
likes = {}
for post in all_posts:
    likes_count = Likes.objects.filter(newsfeed = post).count()
    likes[post.id] = likes_count

form = StatusForm()
context = {
    'name': name,
    'all_posts': all_posts,
    'statusForm': form,
    'likes': likes,
}
  
      
  1. index.html - 在这里,我想显示每个帖子的所有帖子和类似按钮,这些帖子也会显示帖子上的喜欢数量。当我手动尝试访问所谓的计数{{likes.4}}时,它显示第四个状态的正确计数(1)但是当我尝试访问它时,如{{likes.post_id}}它没有显示任何像( )。请帮助我,因为我是新手,并提供建议,以更好的方式做同样的事情。
  2.   
{% for post in all_posts %}
<div class="newsfeed-div">
    <h3>{{ post.title }}</h3>
    <p>{{ post.content }}</p>
    <pre>{{ post.user.name }}</pre>
    <pre>{{ post.time }}</pre>
    {% with post_id=post.id %}
        <a href="{% url 'newsfeed:likeStatus' post.id %}"><button>Like({{ likes.post_id }})</button></a>
        <a href="#"><button>Comment(0)</button></a>
    {% endwith %}
</div><hr/>
{% endfor %}

当我使用类似的内容时:

{{ likes.4}}
我得到正确的喜欢计算第4个新闻源,但为什么
{{ likes.post_id }}
无效?

请帮助我,并提供您以更好的方式完成相同的建议。

1 个答案:

答案 0 :(得分:0)

Django模板不支持通过变量键进行索引。有关类似问题,请参阅Unable to access Dictionary values in Template (object pk is the dict key)

话虽如此,使用

可以轻松解决您的问题
{{ post.likes_set.count }}

_set后缀是RelatedManager默认名称的约定,它将以一对多关系返回所有子记录(属于a的所有likes给定此示例的post并且.count返回行数。