快速解决Django关闭Debug模式无法加载media图片与static静态文件


Posted in Python onApril 07, 2020

开发时,通常打开Debug模式会快速定位开发时的一些问题。

项目开始部署时,关闭Debug模式,url.py路由静态文件和图片写法:

# url.py
from django.views import static
from django.conf import settings
#路由静态文件和图片
urlpatterns = [
 url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='media')
 url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}, name='media')
]

补充知识:Django静态文件的获取,以及对static和media目录设置的一些思考

Django直接获取静态资源文件是不行的,会报错。

添加静态资源文件夹static,设置静态文件根目录后

INSTALLED_APPS = [
 ...
 'django.contrib.staticfiles',
 ...
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

STATIC_URL = '/static/'
# 可收集静态文件到static文件夹,便于访问
STATICFILES_DIRS = [
 os.path.join(BASE_DIR, 'static')
]

配置完成后就可以通过下面的代码调用静态资源了。图片、css、js文件。

{% load static %}

...
...
<img class="author_img rounded-circle" src="{% static 'image/blog/author.png' %}" alt="" >

但是上传到media中的文件可以不通过这种方式调用。但是前提是也要配置media的文件根路径和根目录。

MEDIA_URL = '/media/' # 访问文件的url根路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 上传文件存储根目录

然后可以通过如下方法调用。

<img class="img-fluid" src="/media/{{ detop_view.cover_photo }} " alt="post">

可以注意到这里资源引用没有用{% static ... %},实际上只要这样子在settings.py文件中配置了相关路径和目录,就可以通过这种方式引用。

要是别的静态文件都通过这种方法引用,对于小项目这不是什么问题,你可以将静态文件放在任何你的web服务器能够找到的地方。但是对于大型项目,尤其是那些包含多个app在内的项目,处理那些由app带来的多套不同的静态文件是个麻烦活。但这正是django.contrib.staticfiles的用途:它收集每个应用(和任何你指定的地方)的静态文件到一个统一指定的地方,并且易于访问。

media目录下一般放上传的文件,在django项目部署到服务器的时候,会输入python manage.py collectstatic收集静态资源文件,所以与static目录不冲突,而且media中的文件可能还会被删除。因此后期用户上传的文件不放在static目录下。

以上这篇快速解决Django关闭Debug模式无法加载media图片与static静态文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python爬取各类文档方法归类汇总
Mar 22 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
获取python的list中含有重复值的index方法
Jun 27 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 #Python
解决Django no such table: django_session的问题
Apr 07 #Python
Python PIL库图片灰化处理
Apr 07 #Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 #Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 #Python
PyCharm 在Windows的有用快捷键详解
Apr 07 #Python
python实现控制台输出彩色字体
Apr 05 #Python
You might like
PHP教程 变量定义
2009/10/23 PHP
php无序树实现方法
2015/07/28 PHP
详解js异步文件加载器
2016/01/24 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
React Router基础使用
2017/01/17 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
Python科学计算之Pandas详解
2017/01/15 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
两年的个人工作自我评价
2014/01/10 职场文书
六个一活动实施方案
2014/03/21 职场文书
银行业务授权委托书
2014/10/10 职场文书
助学感谢信范文
2015/01/21 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python