快速解决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 装饰器深入理解
Mar 16 Python
pycharm远程调试openstack代码
Nov 21 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
Python3中的json模块使用详解
May 05 Python
详解python 注释、变量、类型
Aug 10 Python
用python实现刷点击率的示例代码
Feb 21 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
基于Django集成CAS实现流程详解
Nov 28 Python
如何使用flask将模型部署为服务
May 13 Python
pytorch 实现变分自动编码器的操作
May 24 Python
Python中第三方库Faker的使用详解
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 file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
Django数据库迁移常见使用方法
2020/11/12 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
主治医师岗位职责
2013/12/10 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
导游词之吉林吉塔
2019/11/11 职场文书