在Django模板标记中使用上下文的for循环

0 投票
2 回答
862 浏览
提问于 2025-04-17 18:32

我正在尝试查询所有的餐厅,并把它们展示给用户,但我无法让模板显示模型中的项目。

{% block content %}
<h1>Featured Restraunts</h1>
<ul>

{% for restaurant in restaurants %}
    <li><h2>{{ restaurants.name }}</h2></li>
{% endfor %}
</ul>

{% endblock %}

this is what i get
Featured Restaurants



and this is my views.py
def view_restaurants(request):
    restaurants = Restaurant.objects.all()
    return render(request,'menu/restaurants.html',{"restaurants":"restaurants",},context_instance=RequestContext(request))    

这是不是拼写错误?我只想看到一份餐厅的列表。

如果我去掉餐厅后面的 .name,我的浏览器就会显示:

餐厅
餐厅
餐厅
餐厅
餐厅
餐厅
餐厅
餐厅
餐厅
餐厅
餐厅

尽管实际上只有两个条目。

2 个回答

1
{"restaurants":"restaurants",} 

看起来这就是你的问题。

1

你需要把restaurants变量周围的引号去掉(逗号也不需要) -

return render(request,'menu/restaurants.html', {"restaurants": restaurants})

另外,render这个函数不需要你设置context_instance

撰写回答