Django:生成的HTML

时间:2016-03-09 22:32:00

标签: django django-templates django-staticfiles

我有一些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/的根地址?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

此问题是因为static标记中的路径应该相对到静态目录。来自the docs

  

使用已配置的STATICFILES_STORAGE存储空间为指定的相对路径创建完整网址

您正在使用绝对路径。相反,你应该使用:

{% static "home_page/github_repos.js" %}

请注意省略前锋斜杠。