1

我有一个查询集,我想用它的对象来填充模板。我以一种观点结束

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

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

4

3 回答 3

5

@HankGay 说的是正确的,尽管您有时可能希望在不返回 HttpResponse 的情况下获得模板响应,即使您正确使用了 Django。

阅读:渲染上下文

>>> 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."

这就是你所追求的吗?

于 2012-04-09T20:06:58.593 回答
3

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

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

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

于 2012-04-09T20:16:54.823 回答
0

老实说,如果您不处理 HTTP 请求,那么使用 Django 没有多大意义。在Jinja 2中寻找一个与 Django 有很多共同点的简单模板引擎,并在SQLAlchemy中寻找与 Django 相同或更好的 ORM。

于 2012-04-09T20:02:53.517 回答