来自Django模板的字符串,但没有返回HTTPResponse

时间:2012-04-09 20:01:14

标签: django json templates

我有一个查询集,其中我想用它来填充模板。我以

结束的一种观点
return render_to_response('entry.json', {'entry_list':r}, mimetype="application/json; charset=utf-8")

但是我希望能够使用这样的模板序列化到json,而不必返回HTTPResponse。在伪代码中,这可能是:

render('entry.json', {'entry_list':r}) #returns a string with the template entry.json

这可能吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:5)

@HankGay所说的是正确的,尽管你有时可能想要获得模板响应而不返回HttpResponse,即使你正确使用Django。

请阅读:Rendering a context

>>> from django.template import Context, Template
>>> t = Template("My name is {{ my_name }}.")

>>> c = Context({"my_name": "Adrian"})
>>> t.render(c)
"My name is Adrian."

>>> c = Context({"my_name": "Dolores"})
>>> t.render(c)
"My name is Dolores."

这就是你要追求的吗?

答案 1 :(得分:3)

Django为此提供了一个内置的快捷方式。

https://docs.djangoproject.com/en/dev/ref/templates/api/#the-render-to-string-shortcut

我不太明白你想要完成什么,但你可以只返回JSON作为你的HTTPResponse。您可以将对象序列化为jason并在不使用任何模板的情况下返回它。

答案 2 :(得分:0)

如果你没有处理HTTP请求,说实话,使用Django没有多大意义。查看Jinja 2以获得一个简单的模板引擎,该引擎与Django有很多共同点,而SQLAlchemy代表一个等于或优于Django的ORM。