Django模板引擎和外部js文件
Posted
技术标签:
【中文标题】Django模板引擎和外部js文件【英文标题】:Django templating engine and external js files 【发布时间】:2011-04-10 09:31:34 【问题描述】:我正在编写一个 Google 应用引擎应用,显然默认的网络应用框架是 Django 的一个子集。因此,我正在使用它的模板引擎。
我的问题是我是否说过以下代码:
template_values =
'first':first,
'second':second,
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
我想在 index.html 的外部包含的 javascript 文件中引用模板值 first
,我是继续在 index.html 本身中使用 first
还是需要以某种方式告诉框架有关 example.js 的信息,以便它知道在那里替换引用?
【问题讨论】:
【参考方案1】:将值插入 javascript 可能是个坏主意;如果脚本是静态的并让它从 DOM 中获取数据(假设它是您正在呈现的 HTML 页面的一部分)或使用 AJAX 调用从服务器获取必要的数据,这不是更有意义吗?
【讨论】:
欢迎提出建议,为什么这会更好? Ajax 调用将是 imo 不必要的开销,但我有点喜欢 DOM 插入的想法。我猜想在页面中放置数据更自然一点?【参考方案2】:免责声明:我对应用引擎的了解有限,因此此答案可能无法满足您的目的。
在 Django 中,如果您需要能够将变量从视图传递到 JS 文件,则必须确保该文件被模板引擎解析。换句话说,该文件必须由 Django 提供。这意味着例如如果您在由 nginx 提供服务的 media
目录中有一个 JS 文件,您将无法在其中使用模板变量。
我希望同样适用于应用引擎。但请参阅免责声明。我可能完全错了:P
【讨论】:
怀疑这一点 - 这是如何在代码中完成的?只需将其添加到路径变量中? 我知道 Django 的答案——使用direct_to_template
上的薄包装器来提供这个 JS 文件。但是我不知道如何在应用引擎中做到这一点。
我看过 Django 方法。老实说,我不是框架的忠实拥护者,因为看起来我需要采用完整的 Django 库才能做到这一点,我想我只需将任何动态变量作为函数参数传递。以上是关于Django模板引擎和外部js文件的主要内容,如果未能解决你的问题,请参考以下文章