4

我可以这样做来渲染模板。

>>> from django.template import Context, Template
>>> t = Template("My name is {{ my_name }}.")
>>> c = Context({"my_name": "Adrian"})
>>> t.render(c)
u'My name is Adrian.'

现在我想获取渲染的模板,并从中获取上下文。就像是:

>>> t.reverse_render('My name is Adrian.')
{"my_name": "Adrian"}

这甚至是个好主意吗?

更新:我想这样做的原因是因为我正在接收具有明确定义的结构的 XML,并且我认为以这种方式提取数据比手动解析 XML 容易得多。

我正在使用 XML 模板发送响应,这让我想知道是否可以以类似但相反的方式处理请求。

4

2 回答 2

1

据我所知,这不是 Django 功能。所以,不,在 Django 中没有办法。如果您有模板,则必须创建一种解析 html/xml 的方法,并将其与模板进行比较,以便将每个更改关联到每个 {{context_label}}。

这似乎是一个有趣的问题,但我看不出它的解决方案如何在标准的 web 应用程序中有用(因此我看不出 Django 一开始就有这个功能的原因)。

于 2013-07-18T08:31:08.083 回答
0

我发现了一种非常相似的方法,无需 Django 模板,当时对我来说效果很好:

import re

tmpl = 'My name is (?P<name>.*).\nI like to ride my (?P<transport>.*).'
msg = 'My name is Adrian.\nI like to ride my bicycle.'
print(re.compile(tmpl).match(msg).groupdict())

输出:

{'name': 'Adrian', 'transport': 'bicycle'}

XML 正则表达式模板仍然可以保存在 XML 文件中并在运行时读取。

于 2015-04-30T01:39:35.103 回答