快速解决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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python socket C/S结构的聊天室应用实现
Nov 30 Python
numpy数组拼接简单示例
Dec 15 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
python简单贪吃蛇开发
Jan 28 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
基于Python实现股票收益率分析
Apr 02 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python中psutil的介绍与用法
2019/05/02 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Python post请求实现代码实例
2020/02/28 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
医院办公室主任职责
2013/12/29 职场文书
区三好学生主要事迹
2014/01/30 职场文书
投标授权委托书范文
2014/08/02 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
孝女彩金观后感
2015/06/10 职场文书
安全主题班会教案
2015/08/12 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python