快速解决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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python随机生成一个6位的验证码代码分享
Mar 24 Python
python检测是文件还是目录的方法
Jul 03 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
Python进行数据提取的方法总结
Aug 22 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 Python
Python多层装饰器用法实例分析
Feb 09 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
在python里创建一个任务(Task)实例
Apr 25 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
JScript的条件编译
2007/05/29 Javascript
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
Django与遗留的数据库整合的方法指南
2015/07/24 Python
使用Python处理BAM的方法
2018/09/28 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
运动会开幕式邀请函
2014/02/03 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
放假通知格式
2015/04/14 职场文书
初中班主任教育随笔
2015/08/15 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS