You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django视图render方法如何向模板传递多个变量

问题根因

Django的render()方法只接收一个字典类型的上下文参数用于向模板传递数据,你在代码中给render()传入了两个独立字典,第二个字典不会被解析为模板可用的上下文变量,自然无法在模板中拿到product_data。
另外你第一段可运行的代码里存在变量名笔误:定义的集合对象是collection_data_1,查询时写的是collection_data.find(),这段能跑大概率是你之前定义过同名全局变量,建议修正避免隐式bug。

修复方案

把所有需要传递给模板的变量,统一放到同一个上下文字典中传入render()即可,修正后的完整代码:

db = client.inventory_data

def home(request):
    collection_orders = db['orders']
    collection_product = db['product']
    mydata = list(collection_orders.find())
    product_data = list(collection_product.find())
    # 所有模板变量合并到同一个context字典传递
    return render(request, 'home.html', {
        'mydata': mydata,
        'product_data': product_data
    })
模板调用方式

修改完成后,你在home.html中就可以直接通过变量名访问两个列表数据,例如遍历商品列表可以这么写:

<ul>
{% for product in product_data %}
    <li>{{ product.name }}</li>
{% endfor %}
</ul>

订单数据mydata的调用方式和之前完全一致,不受影响。


内容的提问来源于stack exchange,提问作者def init

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:45:29