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

发布于 2024-12-09 11:22:45 字数 483 浏览 1 评论 0原文

我想做的是在我的 Django 应用程序中使用 SIMILE 时间线。时间线需要 XML 文件中的数据。现在,我知道如何在 html 中渲染视图。我或许可以弄清楚如何将视图呈现为 XML。但是,如果磁盘上不存在 XML 文件(因为它是由 Django 生成的),那么如何渲染两者,然后将 XML 数据拉入 HTML 文件呢?

谢谢!

编辑:采用 XML 的行是用 Javascript 编写的,看起来像这样:

Timeline.loadXML("/static/example1.xml", function(xml,url) {eventSource.loadXML(xml,url); })

我需要一个路径,因为直接将 XML 作为字符串插入是行不通的。但不存在路径,因为 XML 文件实际上从未存在于磁盘上。

What I'm trying to do is use a SIMILE timeline in my Django app. The timeline requires it's data in an XML file. Now, I know how to render a view in html. And I can probably figure out how to render a view into XML. But how would one render both, then pull in the XML data to the HTML file if the XML file doesn't exist on disk (since it is being generated by Django)?

Thanks!

Edit: The line that takes the XML is in Javascript, and looks like this:

Timeline.loadXML("/static/example1.xml", function(xml,url) {eventSource.loadXML(xml,url); })

I need a path, since inserting the XML directly as a string doesn't work. But no path exists, since the XML file never actually exists on disk.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走野 2024-12-16 11:22:45

你似乎试图将太多的东西塞进同一个视图中。

我要做的如下:

  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 的工具会更容易。

You seem to be trying to cram too many things into the same view.

What I'd do is the following:

  1. Create a view that generates the XML (every request to the view should generate the XML from scratch).
  2. Create a view that uses the timeline widget and points it to the XML in 1)
  3. Enable Django's caching layer and annotate the XML view appropriately. E.g., @cache_page(60 * 60)

If, for some reason, you need the XML at the time of generation of the HTML (as you seem to indicate in your title), you can just directly call your XML view from the HTML one. E.g.:

@cache_page(..)
def xml(request):
  # ... generate xml

def html(request):
  xml = xml(request)
  # ... generate timeline from xml

Of course, there's nothing stopping you from manually caching to disk but it's easier to just use Django's facilities.

念﹏祤嫣 2024-12-16 11:22:45

您不需要在视图中生成 XML。只需创建一个 XML 模板,将其渲染为字符串,并将结果写入临时文件

You don't need to generate your XML in a view. Just create an XML template, render it to string, and write the result to a temp file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文