Python Django-手动构建HttpResponse,但也希望使用模板
当使用Python Django-手动构建HttpResponse,但也希望使用模板,python,django,django-templates,Python,Django,Django Templates,当使用render_to_response返回HttpResponse对象时,您可以提供一个模板,它将使用该模板并填写您在模板中设置的所有{variables} 如果我想手动构建我的HttpResponse对象,是否仍可以使用我的模板目录中的一个模板?使用,您将获得渲染字符串。您可以将返回的字符串传递给HttpResponse from django.template.loader import render_to_string ... rendered = render_to_string
render_to_response
返回HttpResponse
对象时,您可以提供一个模板,它将使用该模板并填写您在模板中设置的所有{variables}
如果我想手动构建我的HttpResponse
对象,是否仍可以使用我的模板目录中的一个模板?使用,您将获得渲染字符串。您可以将返回的字符串传递给HttpResponse
from django.template.loader import render_to_string
...
rendered = render_to_string('my_template.html', {'foo': 'bar'})
response = HttpResponse(rendered)
是-您可以使用Django将模板作为
模板
对象加载,然后加载到字符串,并将其传递给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的答案——这可能是一个更好、更短的方法 是的,就是这样。谢谢在发布了这个问题之后(就像经常发生的那样),我发现了你实现我想要的东西的方法,当我回到我的问题时,我正在测试它。您的方法非常有效,但正如您所说,@falsetru显示了一种稍微优雅的方法。