Django - 手动构建HttpResponse,但也想使用模板

时间:2014-03-22 15:38:46

标签: python django django-templates

使用HttpResponse返回render_to_response对象时,您可以提供一个模板,它将使用该模板并填写您在模板中设置的所有{{ variables }}

如果我想手动构建我的HttpResponse对象,是否仍然可以在我的模板目录中使用我的一个模板?

2 个答案:

答案 0 :(得分:4)

使用render_to_string,您将获得渲染字符串。您可以将返回的字符串传递给HttpResponse

from django.template.loader import render_to_string

...

rendered = render_to_string('my_template.html', {'foo': 'bar'})
response = HttpResponse(rendered)

答案 1 :(得分:0)

是的 - 你可以使用Django的template loader将模板作为Template对象加载,然后render it加载到一个字符串,然后传递给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)

修改

刚刚注意到@fattru的上述答案 - 这可能是一种更好更短的方式!