在加载的JS文件中使用django模板逻辑(集成django JS)

时间:2015-08-12 02:01:25

标签: javascript jquery python django templates

我有一个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”并让它工作?谢谢

1 个答案:

答案 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>