首页 > 解决方案 > 将字典传递给视图,具有多个键:值对

问题描述

def status_(request,id):
    
    stages=['Vendor Quotation','Estimate Generation','Purchase Requsition','Purchase Order','Provision To Invoice','Reimbursement Invoice','Request Receipt#(PTI+RI+PO)','Receipt# Received(Updated PTI)','Request Sales Tax Invoice','Uploaded to Jazz Portal']    
    ctx={'invoice':Invoices.objects.get(pk=id),'stages':stages}
    return render(request,"Invoices/status.html",ctx)

您好我正在尝试将用于显示的多个数据对象传递给用于显示的模板,我正在创建一个ctx包含多个 2 个键值对的字典,第二个键值对是数组,当我使用访问此数组时

{% for idx in range(0,len(ctx.get("stages")) %}

我收到以下解析错误

**Could not parse the remainder: '(0,len(ctx.get("stages"))' from 'range(0,len(ctx.get("stages"))'**

标签: pythondjango

解决方案


您不能在 Django 模板中使用参数进行函数调用,因此上述方法将不起作用,但您可能不需要它,您可以简单地枚举:

{% for stage in stages %}
    {{ stage }}
{% endfor %}

如果你真的需要枚举,那么你可以通过上下文传递一个范围对象,但可能会弹出下一个问题:你也不能用变量下标。这将需要使用大量额外的模板过滤器,使其非常复杂。模板通常不用于实现业务逻辑,因此 Django 有一个模板引擎不支持复杂的函数调用等,以激励开发人员将业务逻辑移至视图。


推荐阅读