快速解决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中的集合类型操作符
Aug 19 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
Python何时应该使用Lambda函数
Jul 02 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python实现粒子群算法的示例
Feb 14 Python
Python基础之常用库常用方法整理
Apr 30 Python
python基础之文件处理知识总结
May 23 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
php防止sql注入的方法详解
2017/02/20 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
React中jquery引用的实现方法
2017/09/12 jQuery
Javascript实现动态时钟效果
2018/11/17 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
Vue基础配置讲解
2019/11/29 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
Python求导数的方法
2015/05/09 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python截取两个单词之间的内容方法
2018/12/25 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
医药销售求职信范文
2014/02/01 职场文书
《凡卡》教学反思
2014/04/09 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python