You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gunicorn+Nginx部署Django时静态图片无法加载求助

解决Django静态图片加载失败但CSS正常的问题

核心问题分析

CSS能正常加载说明Nginx的静态资源路由配置基本生效,但图片加载失败,结合你的目录结构和代码,主要问题出在图片路径引用错误,同时静态文件收集环节可能存在配置偏差。


分步解决方案

1. 修正模板中的图片路径

从你的目录结构可以看到,picture.jpg实际位于/var/www/myname/static/admin/images/,但你的模板代码中直接引用了{% static 'picture.jpg' %},这会生成/static/picture.jpg的URL,与实际文件位置不符。

修改模板代码为:

<img src="{% static 'admin/images/picture.jpg' %}" class="img-fluid">

2. 配置正确的STATIC_ROOT并重新收集静态文件

  • 在settings.py中设置正确的静态文件收集目录:
    BASE_DIR = Path(__file__).resolve().parent.parent
    STATIC_URL = '/static/'
    # 指向Nginx配置中alias的目录
    STATIC_ROOT = '/var/www/myname/static/'
    
  • 运行Django的静态文件收集命令,确保所有静态资源(包括admin的图片、CSS)都被同步到STATIC_ROOT目录:
    python manage.py collectstatic
    
    运行时确认输入yes完成收集。

3. 检查静态文件目录权限

确保Nginx进程有读取静态文件的权限,执行以下命令设置权限:

# 更改目录所属用户为Nginx运行用户(通常是www-data)
sudo chown -R www-data:www-data /var/www/myname/static/
# 设置目录和文件的读写权限
sudo chmod -R 755 /var/www/myname/static/
sudo chmod -R 644 /var/www/myname/static/*

4. 验证Nginx配置并重启服务

  • 检查Nginx配置语法是否正确:
    sudo nginx -t
    
  • 如果配置无错误,重启Nginx服务:
    sudo systemctl restart nginx
    

内容的提问来源于stack exchange,提问作者Shalofty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:40:26