我尝试加载特定文件但由于Django管理相对路径的方式而失败。这是我的应用程序的结构:
mysite
|-- manage.py
|-- mysite
|-- __init__.py
|-- settings.py
|-- urls.py
|-- wsgi.py
|-- app
|-- __init__.py
|-- models.py
|-- tests.py
|-- views.py
|-- static
|-- JS
|-- myScript.js
|-- data
|-- myData.geojson
|-- templates
|-- app
|-- index.html
换句话说,很标准。两个关键部分是我将myScript.js加载到我的index.html中,如下所示:
<script type='text/javascript' src="{% static '/JS/myScript.js' %}"></script>
问题是,在myScript.js中,我想加载myData.geojson。这不起作用:
...
'url': '/static/data/myData.geojson'
...
也不是
'url': '{% static /data/myData.geojson %}' #this throws an error
我只想要一个项目设置,我可以使用相对路径来执行此操作:
'url': '../data/myData.geojson'
这可能吗?我目前的设置如下:
STATIC_URL = '/static/'
STATIC_ROOT = '/var/www/mysite/static'
答案 0 :(得分:0)
Django在渲染时将static
模板标记URL转换为其对应的绝对URI。您不能在JavaScript文件中使用Django模板标记。有两种方法可以解决这个问题。
<span id="absoluteURIResource" style="display: hidden;">{% static "path/to/your/resource" %}</span>
然后在您的JavaScript中,您可以访问:
var path = document.getElementByID("absoluteURIResource").innerHTML;
第二个更像是一个黑客,弄清楚绝对URI会更容易。