我有一个JS片段,可以在多个文件中使用和使用:
@app.route('/github-auth-start', methods=["GET"])
def github_auth_start():
next_url = request.args.get('next') or url_for('main_page')
if current_user.is_authenticated():
return flask_github.authorize(
redirect_uri = url_for(
'github_auth_finished',
_external=True,
next=next_url))
return abort(403)
但是,如果我将该代码放在单独的文件“main.js”中并将其加载到模板中,它将不再起作用。它现在在'main.js'中:
<script>
{% if not articles %}
var url = {% url 'index:new-article' %};
$('body').on('click',function(e){
window.location = url
});
;
{% endif %}
</script>
但加载时如下:
var url = {% url 'index:new-article' %};
$('body').on('click',function(e){
window.location = url
});
;
在'mytemplate.html'中,代码现已破坏。其他人建议您只想将要使用的JS文件包含在django模板中(best practice including javascript in django template)。我怎样才能使用一些模板逻辑,比如我的“if not this,include js file”并让它工作?谢谢
答案 0 :(得分:1)
{% url 'index:new-article' %}
将返回原始字符串,您必须引用其输出才能使其成为有效的Javascript。
<script>
{% if not articles %}
var url = '{% url 'index:new-article' %}';
$('body').on('click',function(e){
window.location = url
});
;
{% endif %}
</script>