Django中如何将字典传递给模板?代码问题求助
解决Django模板渲染显示原始HTML的问题
问题原因
你调用template.render()时未正确传递**上下文(context)和请求(request)**参数,导致模板语法未被解析,最终输出原始HTML代码。另外代码里的news变量未定义,需先为它赋值。
修复方案
有两种实用的修复方式:
方式1:修正loader渲染的参数传递
调整template.render()的调用逻辑,传入context和request参数:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader def home(request): # 先定义news变量,示例赋值 news = ["Django入门笔记", "模板渲染实用技巧"] context = { 'news': news } template = loader.get_template('home.html') # 传递上下文和请求对象到render方法 return HttpResponse(template.render(context, request))
方式2:使用更简洁的render快捷函数
Django提供的render函数已封装了模板加载、上下文传递和响应返回的流程,更适合新手:
from django.shortcuts import render def home(request): news = ["Django入门笔记", "模板渲染实用技巧"] context = { 'news': news } # 直接传入请求、模板路径和上下文 return render(request, 'home.html', context)
额外提示
- 确保
home.html中的模板语法正确,比如遍历news的写法:{% for item in news %} <p>{{ item }}</p> {% endfor %} - 必须提前定义
news变量,否则会触发变量未定义的错误。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

