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

Django中从views.py向HTML传变量报错:context需为字典而非集合

Django 传递模板变量时TypeError错误解决

问题代码

views.py

def VariableView(request):
    context = {'firstName: Muhammad' , 'lastName: Khan'}

    return render(request, 'Variable.html',context)

Variable.html

<body>
    <h1>VARIABLE.HTML</h1>
    <h2>{{firstName | upper}}</h2>
</body>

错误信息

TypeError at /MyApp/variable/
context must be a dict rather than set.
Request Method: GET
Request URL:    http://127.0.0.1:8000/MyApp/variable/
Django Version: 3.2
Exception Type: TypeError
Exception Value:    
context must be a dict rather than set.
Exception Location: C:\Users\DELL\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\django\template\context.py, line 268, in make_context
Python Executable:  C:\Users\DELL\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\python.exe
Python Version: 3.7.9
Python Path:    
['C:\\Users\\DELL\\Desktop\\DJango\\mysite',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\\python37.zip',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\\DLLs',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\\lib',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0',
 'C:\\Users\\DELL\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python37\\site-packages',
 'C:\\Program '
 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\\lib\\site-packages']
Server time:    Fri, 29 Jul 2022 08:23:36 +0000

错误原因

Django的render函数要求第三个参数context必须是字典(dict)类型,但你当前定义的context是一个集合(set)——你把键值对写成了单个字符串,用逗号分隔放在大括号里,这在Python中会被解析为集合,而非字典。

修正代码

修改views.py中的context定义,使用字典的正确格式(键: 值,键值对之间用逗号分隔):

def VariableView(request):
    context = {'firstName': 'Muhammad', 'lastName': 'Khan'}

    return render(request, 'Variable.html', context)

修正后,context是标准的字典类型,Django可以正确将变量传递到模板中,{{firstName | upper}}就能正常渲染出大写的名字。

内容的提问来源于stack exchange,提问作者dilawaiz khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:45:52