快速解决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局域网ip扫描示例分享
Apr 03 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
简单介绍Python中的round()方法
May 15 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
人机交互程序 python实现人机对话
Nov 14 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
python爬虫快速响应服务器的做法
Nov 24 Python
Python实现智慧校园自动评教全新版
Jun 18 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面向对象public private protected 访问修饰符
2013/06/30 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
Python字符串匹配算法KMP实例
2015/07/18 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Python实现自动签到脚本功能
2020/08/20 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
python绘制高斯曲线
2021/02/19 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
高级电工工作职责
2013/11/21 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
教师创先争优承诺书
2015/04/27 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python