快速解决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多线程抓取天涯帖子内容示例
Apr 03 Python
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
python实现求特征选择的信息增益
Dec 18 Python
Python发展史及网络爬虫
Jun 19 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Python读写csv文件流程及异常解决
Oct 20 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
python3使用diagrams绘制架构图的步骤
Apr 08 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
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
小程序新版订阅消息模板消息
2019/12/31 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
python eventlet绿化和patch原理
2020/11/21 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
社区母亲节活动方案
2014/03/05 职场文书
环保建议书作文
2014/03/12 职场文书
动员大会主持词
2014/03/20 职场文书
供用电专业求职信
2014/07/07 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers