我在views.py中有一个生成字符串的函数,该字符串是XML文件的内容。目前我通过模板呈现它:
def sitemap(request):
sitemap_str = generate_sitemap_string_on_the_fly()
return render(request, 'sitemap.html',
{'sitemap_str': sitemap_str},
content_type='text/xml')
在sitemap.html模板中,我只需要这一行:
{{ sitemap_str|safe }}
有没有更好的方法来实现这一目标?我的观点是,在这里使用模板有点过分。我可以在不使用模板的情况下发送字符串吗?
答案 0 :(得分:0)
是的,您可以在不使用模板的情况下简单地返回HttpResponse。
return HttpResponse('<html><body>' + sitemap_str + '</body></html>')
或更简单
return HttpResponse(sitemap_str)
答案 1 :(得分:0)
render
只是渲染模板并将其包装在HttpResponse中的快捷方式。如果您不需要实际的模板部分,只需直接创建HttpResponse:
from django.http import HttpResponse
...
return HttpResponse(sitemap_str, content_type='text/xml')