2013-07-15 78 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必須擺在首位此功能)。

相關問題