快速解决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 24 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
python实现多层感知器
Jan 18 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
Python配置文件处理的方法教程
Aug 29 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
用python修改excel表某一列内容的操作方法
Jun 11 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模拟post提交数据的方法
2015/02/12 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
什么是组件架构
2016/05/15 面试题
教你怎样写好自我评价
2013/10/05 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
趣味活动策划方案
2014/02/08 职场文书
网站客服岗位职责
2014/04/05 职场文书
小学生优秀评语大全
2014/04/22 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
钱塘江大潮导游词
2015/02/03 职场文书