我有以下目录结构,遵循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.js
,c.js
和d.js
的路径(但它们都位于同一目录中!)。我该如何解决这个问题?
答案 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_c
,js_d
和a.js
,因为它们是静态路径的字符串b.js
,c.js
和d.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))