Django:在JavaScript文件中指定文件路径

时间:2014-11-20 02:39:47

标签: django django-staticfiles

我有以下目录结构,遵循Django的标准:

/my_site
    /my_site
    /my_app
        /static
            /my_app
                /js
                    a.js
                    b.js
                    c.js
                    d.js

我在html中指定静态路径没有问题:

{% load staticfiles %}
<script src="{% static 'my_app/js/a.js' %}"></script>

但是,文件a.js中有一些语句如下:

var WORKER_PATH = 'b.js';
var encoderWorker = new Worker('c.js');
importScripts('d.js');

我无法正确设置b.jsc.jsd.js的路径(但它们都位于同一目录中!)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在html中添加另一个<script>标记:

<script language="javascript">
    var js_b = "{% static 'my_app/js/b.js' %}";
    var js_c = "{% static 'my_app/js/c.js' %}";
    var js_d = "{% static 'my_app/js/d.js' %}";
</script>

之后,您可以在js_b JavaScript文件中使用变量js_cjs_da.js,因为它们是静态路径的字符串b.jsc.jsd.js

您还可以从视图中获取这些变量,并使用RequestContext返回它们:

from django.templatetags.static import static

# in your view function
js_b = static('my_app/js/b.js')
js_c = static('my_app/js/c.js')
js_d = static('my_app/js/d.js')
context = {'js_b': js_b, 'js_c': js_c, 'js_d': js_d}
return render_to_response('your_template.html', RequestContext(request, context))