Django:如何渲染XML文件并在同时渲染的视图中使用该XML?
我想在我的Django应用中使用一个SIMILE时间轴。这个时间轴需要用XML文件来提供数据。现在,我知道怎么把视图渲染成HTML。我可能也能搞定把视图渲染成XML。但是,问题是,怎么才能同时渲染这两种格式,然后在HTML文件中引入XML数据呢?因为这个XML文件并不是真正存在于磁盘上的,它是由Django生成的。
谢谢!
补充说明:接收XML的那行代码是在JavaScript中,长这样:
Timeline.loadXML("/static/example1.xml", function(xml,url) {eventSource.loadXML(xml,url); })
我需要一个路径,因为直接把XML作为字符串插入是行不通的。但问题是没有路径,因为这个XML文件根本不在磁盘上存在。
2 个回答
1
你似乎在一个视图里塞了太多东西。
我会这样做:
- 创建一个视图,专门用来生成XML(每次请求这个视图时都要从头开始生成XML)。
- 再创建一个视图,使用时间轴小部件,并指向第1步生成的XML。
- 启用Django的缓存功能,并给XML视图加上合适的注释。例如,
@cache_page(60 * 60)
。
如果因为某种原因,你需要在生成HTML时就得到XML(就像你在标题里提到的那样),你可以直接从HTML视图调用你的XML视图。例如:
@cache_page(..)
def xml(request):
# ... generate xml
def html(request):
xml = xml(request)
# ... generate timeline from xml
当然,你也可以手动把数据缓存到磁盘,但用Django自带的功能会简单很多。