渲染选中的模板时抛出「HttpRequest无'meta'属性」错误该如何处理?
问题根因
- 你对文档的描述存在理解偏差:Django 模板的
render()方法要求传入的第二个参数是 HttpRequest 类的实例对象,也就是视图函数形参中拿到的request,而非HttpRequest这个类本身。 - 你当前代码直接传入了
HttpRequest类,类本身不会初始化meta属性,只有实例化后的请求对象才会携带包括meta在内的请求上下文数据,因此触发属性不存在的报错。
修复方案
修改代码为如下写法即可:
from django.http import HttpResponse from django.template.loader import select_template def thanks(request): template = select_template(['poll/a.html', 'poll/b.html']) # 传入实例化的request对象,而非HttpRequest类 rendered_content = template.render({'a': 'b'}, request) return HttpResponse(rendered_content)
如果你的模板不需要调用请求上下文里的变量,也可以省略第二个参数,直接写template.render({'a': 'b'})即可正常运行。
内容的提问来源于stack exchange,提问作者Kamila
相关产品推荐
相关产品推荐

