快速解决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类的专用方法实例分析
Jan 09 Python
总结Python中逻辑运算符的使用
May 13 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
django静态文件加载的方法
May 20 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python tkinter基本属性详解
Sep 16 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Django与pyecharts结合的实例代码
May 13 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 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中函数内引用全局变量的方法
2008/10/20 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
详解Python验证码识别
2016/01/25 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python:接口间数据传递与调用方法
2018/12/17 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
《花木兰》教学反思
2014/04/09 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL