2013-07-15 44 views
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模板发送响应,并且让我知道如果我能处理类似的请求,但反转,时尚。

+0

你可以澄清你的使用案例,也就是说你为什么需要这个? – dragoon

+0

我用我的推理更新了这个问题。 –

+0

我明白了,我个人认为 - 你需要解析XML,或以某种方式切换到JSON,然后你可以很容易地将它反序列化为在python中的字典。 – dragoon

回答

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文件中并在运行时读入。

1

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

这似乎是一个有趣的问题,但我看不到它的解决方案如何能够在一个标准的web应用程序非常有用(因此,我认为没有理由的Django必须摆在首位此功能)。

相关问题