将字符串作为页面传递

时间:2014-06-14 19:55:39

标签: django django-views

我在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 }}

有没有更好的方法来实现这一目标?我的观点是,在这里使用模板有点过分。我可以在不使用模板的情况下发送字符串吗?

2 个答案:

答案 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')