快速解决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中max函数用法实例分析
Jul 17 Python
Python编程中的for循环语句学习教程
Oct 14 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
Python3实现购物车功能
Apr 18 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
python关于集合的知识案例详解
May 30 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
python之基数排序的实现
Jul 26 Python
pandas中关于apply+lambda的应用
Feb 28 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文件锁函数flock()详细介绍
2014/11/18 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
PHP chop()函数讲解
2019/02/11 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
编程语言Python的发展史
2014/09/26 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
python 实现字符串下标的输出功能
2020/02/13 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
Python使用openpyxl复制整张sheet
2021/03/24 Python
总裁岗位职责
2013/12/04 职场文书
小学毕业演讲稿
2014/04/25 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
地雷战观后感
2015/06/09 职场文书
学雷锋感言
2015/08/03 职场文书
小学教师教育随笔
2015/08/14 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang