上下文和词典python Django

时间:2018-02-27 03:35:51

标签: python html django dictionary url

所以我有以下代码:

views.py:

def topics(request):
    """Show all topics"""
    topics = Topic.objects.order_by('date_added')
    context = {'topics': topics}
    return render(request, 'learning_logs/topics.html', context)
        return render(request, 'learning_logs/topic.html', context)

据我所知,我正在查询数据库并按日期对数据进行排序,然后将该数据存储在主题变量中。我的第一个问题是,主题变量是将数据存储为列表吗? (假设有多个条目)。

如果是这样,我在html文件中有以下代码

topics.html:

<ul>
  {% for topic in topics %}
    <li>{{ topic }}</li>
  {% empty %}
    <li>No topics have been added yet.</li>
  {% endfor %}
</ul>

为什么我需要将主题中存储的数据传递到topic.html的上下文字典中以循环显示数据?为什么不循环遍历主题变量本身?我只是对“上下文”的使用感到困惑

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在返回一个HttpResponse,该HttpResponse不知道要为任何给定的{{var}}添加什么内容,所以在您所说的字典中,如果您在我的上下文中看到任何键,请将其替换因为它的价值。因为你正在返回一个函数,所以让函数知道要使用的唯一方法是将它作为参数放在其中。

此外,Model.objects.all()不返回列表,而是返回一个惰性查询集对象,您可以在其中执行类似

的操作
for x in Model.objects.all():
    x.one_of_the_fields