Django模板静态图片不显示,已排除URL配置问题求助
1. 修正settings.py配置
你原有配置存在路径规则错误,按以下内容调整:
- 原
STATIC_URL配置不符合Django规范,统一改为标准/static/即可 STATIC_ROOT路径不能带前导斜杠,带前导斜杠会被识别为系统根目录的绝对路径,无法对应项目目录STATICFILES_DIRS不需要重复配置多条绝对路径,Django默认会自动查找每个已注册APP下的static目录,只需保留基础配置即可
STATIC_URL = '/static/' # 生产环境执行collectstatic命令后,静态资源会自动归集到该目录 STATIC_ROOT = os.path.join(BASE_DIR, "static/") # 额外静态文件查找路径,可直接省略不写 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "storiesapp/static/"), ] STATICFILES_FINDERS =[ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] # MEDIA相关配置用于存储用户上传的动态资源,你的静态背景图不需要用到,原有配置可直接保留 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
2. 修正urls.py配置
你目前仅配置了MEDIA资源的访问路由,开发环境下还需要补充静态资源的路由规则:
from django.conf import settings from django.conf.urls.static import static ... # 该配置仅开发环境生效,生产环境请用Nginx等服务代理静态资源 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
3. 修正模板中的图片引用方式
首先在模板文件的最顶部加载static模板标签:
{% load static %}
再替换为正确的静态资源引用写法:
<link rel="apple-touch-icon" sizes="76x76" href="{% static 'storiesapp/img/image.png' %}"> <img src="{% static 'storiesapp/img/image.png' %}">
你之前引用写法的错误点:
- 第一种写法的
./assets/路径不存在,自然找不到资源 - 第二种写法直接写相对路径
static/storiesapp/img/,如果当前页面不在站点根路径下,相对路径会自动拼接当前页面的URL前缀,导致路径错误 - 第三种写法误用了MEDIA配置,MEDIA仅用于存储用户上传的动态文件,你的静态背景图不属于MEDIA范畴,且语法也存在错误,正确写法是
{{ MEDIA_URL }}而非{{ MEDIA.URL }}
内容的提问来源于stack exchange,提问作者Game Analysis
相关产品推荐
相关产品推荐

