繁体   English   中英

如何从我的JavaScript文件链接到Django静态资产?

[英]How do I link to Django static assets from my JavaScript files?

我正在尝试加载特定文件,但是由于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'

Django在渲染时将static模板标记URL转换为其相应的绝对URI。 您不能在JavaScript文件中使用Django模板标签。 有两种方法可以解决此问题。

  1. 找出资源的绝对URI,然后在您的JS文件中使用它。
  2. 将需要使用外部链接的部分移到HTML文件中。 并执行以下操作:

<span id="absoluteURIResource" style="display: hidden;">{% static "path/to/your/resource" %}</span>

然后在您的JavaScript中,您可以通过以下方式访问此文件:

var path = document.getElementByID("absoluteURIResource").innerHTML;

第二个问题更像是骇客,找出绝对URI会更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM