Django:如何渲染XML文件并在同时渲染的视图中使用该XML?

1 投票
2 回答
3203 浏览
提问于 2025-04-17 04:13

我想在我的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

你似乎在一个视图里塞了太多东西。

我会这样做:

  1. 创建一个视图,专门用来生成XML(每次请求这个视图时都要从头开始生成XML)。
  2. 再创建一个视图,使用时间轴小部件,并指向第1步生成的XML。
  3. 启用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自带的功能会简单很多。

撰写回答