初学django,官方文档把我弄晕了,链接点了半天又回到了原点,来sf请教一下。
project名为newpro,app名为newapp,目录结构是这样的(略去了一些与问题无关的文件)
BASE_DIR
manage.py
static_root/
newpro/
settings.py
urls.py
newapp/
urls.py
views.py
static/
newapp/
pic.png
mystatic/
newapp/
pic.png
templates/
newapp/
pic.html
下面是settings.py
# snap
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'newapp',
]
# snap
STATIC_URL = '/mystatic/'
STATIC_ROOT = 'static_root'
在就是pic.html(忽略其它)
{% load staticfiles %}
<img src="{% static 'newapp/pic.png' %}">
我发现模板html里用的是static/newapp/pic.png
而非mystatic/newapp/pic.png
,但是我在浏览器里查看源码,图片url是mystatic/newapp/pic.png
.
提问
1.STATIC_URL的功能是否只是在我使用template tag
方式修改模板时,在前面加上前缀(例子中的'/mystatic/' + 'newapp/pic.png'),而实际使用那个staticfile还是按照默认的在各个app下的static目录下查找
2.如果把STATIC_URL改成'mystatic/',发现无法显示图片,这好像就说明不是简单的加上前缀,为什么这样无法显示图片呢?模糊地认为是相对路径和绝对路径的问题
3.不用STATICFILES_DIRS是否可以做到搜索staticfiles时是在每个app下面的指定目录,如mystatic
是的,
STATIC_URL
只在乎 URL 前缀,查找时仍在static
目录下查找因为没有前导
/
,变成了相对路径,故找不到你可以自定义
STATICFILES_FINDERS
: https://docs.djangoproject.co...