Eri*_*off 35 javascript python url-for flask
使用flask时,在Javascript文件中创建动态URL的推荐方法是什么?在jinja2模板和python视图url_for中使用,在.js文件中执行此操作的建议方法是什么?因为它们不是由模板引擎解释的.
基本上想做的是:
// in comments.js
$.post(url_for('comment.comment_reply'));
Run Code Online (Sandbox Code Playgroud)
这是不可能的.
但很自然地,我可以在模板中执行它:
<script>
$.post(url_for('comment.comment_reply'));
</script>
Run Code Online (Sandbox Code Playgroud)
小智 31
@ dumbmatter的建议几乎被认为是事实上的标准方式.但我认为会有更好的方法.所以我设法开发了这个插件:Flask-JSGlue.
添加后{{ JSGlue.include() }},您可以在源代码中执行以下操作:
<script>
$.post(Flask.url_for('comment.comment_reply', {article_id: 3}));
</script>
Run Code Online (Sandbox Code Playgroud)
要么:
<script>
location.href = Flask.url_for('index', {});
</script>
Run Code Online (Sandbox Code Playgroud)
小智 5
正在寻找解决方案,他们提出了这个解决方案,其中
不需要附加组件
没有硬编码的 URL
关键是要实现Jinja2具有开箱即用的渲染 javascript 的能力。
将您的模板文件夹设置为如下所示:
/template
/html
/index.html
/js
/index.js
Run Code Online (Sandbox Code Playgroud)
在你的 views.py 中
@app.route("/index_js")
def index_js():
render_template("/js/index.js")
Run Code Online (Sandbox Code Playgroud)
现在,而不是从您的静态文件夹中提供 javascript。你会使用:
<script src="{{ url_for('index_js') }}"></script>
Run Code Online (Sandbox Code Playgroud)
毕竟,您正在动态生成 javascript,它不再是静态文件。
现在,在您的 javascript 文件中,只需url_for像在任何html文件中一样使用 。
例如Jquery用于发出 Ajax 请求
$.ajax({
url: {{ url_for('endpoint_to_resource') }},
method: "GET",
success: call_back()
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28838 次 |
| 最近记录: |