我有一些javascript,我想在我正在构建的Django网站的特定页面上运行。在我目前拥有的模板中:
<script type='text/javascript' src='{% static "/home_page/github_repos.js" %}'></script>
由此生成的HTML是:
http://localhost:8000/home_page/github_repos.js
问题是我在/static/home_page/
中有javascript。
如果我在路径中硬编码为:
<script type='text/javascript' src='static/home_page/github_repos.js'></script>
一切正常。
但是,我有些奇怪的行为,我不明白:
如果在模板中我设置了这样的路径:
<script type='text/javascript' src='{% static "static/home_page/github_repos.js" %}'></script>
HTML生成的src属性为/static/static/home_page/github_repos.js
真正让我失望的部分是,如果我在使用模板标签时没有将/static/
放在src的前面(就像我给出的第一个例子),/static/
不是但是,如果我在前面添加/static/
,则会添加它。我需要将/static/
添加到src属性的前面,但只需添加一次。
一些相关信息:
我的home_page应用程序解析为“/”作为网址,因此localhost:8000/
会将您带到主页。
我在已安装的应用中加入了'django.contrib.staticfiles'
最后,STATIC_URL = '/static/'
是否发生此问题是因为我的home_page应用已解析为localhost:8000/
的根地址?
感谢任何帮助。
答案 0 :(得分:1)
此问题是因为static
标记中的路径应该相对到静态目录。来自the docs:
使用已配置的
STATICFILES_STORAGE
存储空间为指定的相对路径创建完整网址
您正在使用绝对路径。相反,你应该使用:
{% static "home_page/github_repos.js" %}
请注意省略前锋斜杠。