我有一个查询集,其中我想用它来填充模板。我以
结束的一种观点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
这可能吗?如果是这样,怎么样?
答案 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。