我正在使用PythonFlask framework创建一个网站,其中有一个templates/
文件夹和一个static/
文件夹。顾名思义,templates文件夹包含通过jinja2 templating engine呈现的模板,static文件夹包含静态内容,如css、图像和静态javascript文件。在
javascript文件是我遇到的问题。有时我想在js中放入一个jinja变量,例如:
var requestJson = {'text': messageText, 'toUserId': {{ user.id }}};
但是,如果我在static/
文件夹中的.js
文件中执行此操作,则不会呈现该文件,因此仅当我将其放在模板文件中的<script>
标记之间时,此操作才有效。这是可行的,但是感觉有点混乱,因为我现在在静态文件夹中有一些js,在模板文件中有一些js。在
当然,我可以通过在模板中定义一个document.toUserId = {{ user.id }};
并在.js文件中使用它来解决这个问题,但是,这也有点像黑客攻击。在
所以我的问题是:在javascript中处理jinja动态值的插入的最好的/pythonic/最简洁的方法是什么?在
非常有趣的问题,我在某个时间点思考了很多。到现在为止,我已经做到了,并且看到它正是这样做的,在我看来,这是最好和最Python的选择。我想我还记得Flask文档甚至推荐过它(不记得在哪里)。在
只需使用适当的名称空间,将需要模板呈现的特定变量放入
.html
文件中的脚本中。在以及您的
.js
文件中的所有其他文件(我碰巧在使用CoffeeScript,因此出于一致性原因,将尽可能少的代码直接放在模板中的<script>
标记中对我来说更为重要)。在例如,下面是一个(稍作修改)脚本,它位于我当前使用的模板的末尾:
它运行得非常好,经过几个项目,其中一些已经存在了相当长的时间,有很多人参与其中,我可以说它是完全可读和可维护的。只需小心明智地选择名称空间。在
相关问题 更多 >
编程相关推荐