下面的代码会产生错误..我怎么能解决这个问题?
提前致谢:)
{% block header %}
<link rel="stylesheet" href="{% static 'shop/style.css' %}" />
{% endblock %}
错误输出:
答案 0 :(得分:116)
不,这不是不可能的。尝试在同一html文件中包含{% load staticfiles%}
,而不是尝试从某些base.html
继承它。
答案 1 :(得分:10)
1。)添加A TUPLE:
STATIFILES_DIR =( os.path.join(BASE_DIR,'assets'), )
在urls.py中2。)添加:
from django.contrib.staticfiles.urls import staticfiles.urlpatterns
urlpatterns += staticfile_urlpatterns()
3.。)在html文件中你要放置“link rel ='stylesheet'..”,只需添加到顶部:
{% load static from staticfiles %}
and then use :
<link rel="stylesheet" href="{% static 'assets/css' %}"
答案 2 :(得分:0)
我的解决方案是include
另一个带有{% load static %}
的页面和带有静态引用的脚本。 {% block xxx %}
期望第一个{% yyy %}
不是{% include %}
和{% endblock %}
(我观察到的唯一案例);因此,当我们使用"{% static 'xxx.js' %}"
时,它会中断和抱怨。但是包括另一页将使Django平静下来。
例如,我有一个页面homepage
,它扩展了base.html
并且有一些静态js文件,这些文件未包含在base.html
中。
base.html
{% block page %}
{% endblock %}
{% block script %}
{% endblock %}
homepage.html
:
{% extends 'base.html' %}
{% block page %}
...
{% endblock %}
{% block script %}
{% include 'home_js.html'%} <!-- don't use static links here because Django does not like it. -->
{% endblock %}
home_js.html
:
{% load static %}
<script src="{% static 'scripts/jquery.js' %}" ></script>
<script>
function ...
</script>
现在加载脚本。
因此,在一个区块中,我们无法使用{% %}
和{% block xxx %}
以外的{% endblock %}
标记。
我正在使用Django 5.1。
编辑:
在这种情况下,我发现{% verbatim %}
标签是我们的救星。
答案 3 :(得分:0)
只需将{% load static %}
添加到模板的顶部 之后{% extends 'app/base.html' %}
。
答案 4 :(得分:0)
如果您使用的是Apache,请确保已将虚拟主机配置为提供静态文件,例如在000-default.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
Alias /static /home/Dev/cfehome/src/static
<Directory /home/Dev/cfehome/src/static>
Require all granted
</Directory>
<Directory /home/Dev/cfehome/src/cfehome>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess cfehome python-path=/home/Dev/cfehome/src:/home/Dev/cfehome/lib/python3.7/site-packages
WSGIProcessGroup cfehome
WSGIScriptAlias / /home/Dev/cfehome/src/cfehome/wsgi.py
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案 5 :(得分:-1)
是。 Django不允许这样做。
您可以使用适当的路径,如:
<link rel="stylesheet" href="/static/shop/style.css" />
但请注意:如果您更改了应用STATIC_URL
,则上述href
也必须相应更新。
在您的模板中,要么像/static/my_app/example.jpg一样对网址进行硬编码,要么最好使用静态模板标记......