Django - 手动构建HttpResponse,但也想使用模板
当你用 render_to_response
返回一个 HttpResponse
对象时,你可以指定一个模板,它会使用这个模板,并把你在模板中设置的所有 {{ 变量 }}
填进去。
如果我想手动构建我的 HttpResponse
对象,是否还可以使用我模板目录中的某个模板呢?
2 个回答
1
没错,你可以使用Django的模板加载器来加载你的模板,这样就能得到一个Template
对象。接着,你可以把它渲染成字符串,然后把这个字符串传给HttpResponse
。
from django.template import Template, Context
from django.template.loader import get_template
def my_view(request):
temp = get_template('/path/to/template.html')
result = temp.render(Context({'context': 'here'})
return HttpResponse(result)
编辑
刚注意到@falsetru上面的回答——那可能是个更好更简短的方法!
13
使用 render_to_string
,你会得到一个渲染好的字符串。你可以把这个返回的字符串传给 HttpResponse
。
from django.template.loader import render_to_string
...
rendered = render_to_string('my_template.html', {'foo': 'bar'})
response = HttpResponse(rendered)