django 读取图片到页面实例


Posted in Python onMarch 27, 2020

首先,我们看看models.py里的模型,有个upload_to参数,为了和过去一刀两断,楼主决定给upload_to赋值一个新的值叫avatar/,这个参数的意思是把文件上传到MEDIA_ROOT/avatar/下面。

既然这里upload_to的值是连接在MEDIA_ROOT/路径后的一部分,所以很自然的只能写成avatar/或者./avatar/,而不能写成/avatar/,楼主已经以身试法过。

还有一点,这里提到了MEDIA_ROOT,可是我们一直没设置过啊。

headImg = models.FileField(upload_to='avatar/')

所以理所当然的要设置MEDIA_ROOT,所以在settings.py中做如下设置,这里的意思就是说,我们在项目根目录下会新建一个media文件夹,专门用来存放media文件。结合上面的设置可推出,我们上传的文件会放在/media/avatar/下:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/")```

这`MEDIA_ROOT`就是媒体根目录的路径,这……好像是废话。上传的文件也会放在这里,但是正如我们上面探索时提到的:使用文件,实质上也是调用了一个文件的url,在Django中提到url,都是要从`urlpatterns`中过滤一遍的。

所以,展示图片的逻辑应该是这样的:我们调用图片的url一般是有规律的,我们过滤的时候发现,只要符合,就按照文件名从媒体根目录中找相应的文件。

- 所以,我们先找到图片url的规律,都说了,图片都是存在`/media/avatar/`中,也就是说图片的路径应该是包含`/media/avatar/`的,为了保险起见以及后续我们可能会存除了头像之外的其他文件,比如储存缩略图的叫`/media/thumb/`,所以这里我们取大家共有的`/media/`作为过滤url的规律。

MEDIA_URL = '/media/'

- 这也就是为什么`MEDIA_ROOT`和`MEDIA_ROOT`经常一起出现,并且他们的有相同的值。

准备好这些后,在`urlpatterns`中写吧,这里写的路由和普通的路由不一样,因为我们这里的所有的媒体文件其实都是静态文件的一部分,而且我们一般路由符合条件后是去执行`views`中的某个函数,这里却是去某个文件夹中找文件,所以肯定写法上是不同的,写法是`static(如果符合这样规律的url,就去这个目录中找文件)`:

导入这两个包

setting.py中

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)```

如果你之前在探索的时候经常会看看浏览器会输出什么错误,你一般都是看到要么是404 error,要么就是500 error。为什么会出现404 error,就是因为我们给的图片路径没有在urlpatterns中定义过,所以Django在要展示图片的时候,一看,咦,这什么鬼url,在urlpatterns中根本没有对应的可以查,所以是错误的请求网址,返回404 error。在urlpatterns中添加之后,就不会有404 error了。

好了,我们还剩下最后一步,就是在img的src中填写正确的图片地址。我们之前说了图片是储存在/media/avatar/下面的,所以图片的路径就是:

<img src="/media/{{user.headImg}}" alt=""/>

因为我们储存在数据库中的图片路径是upload_to的值和图片名称的拼接,比如下面的avatar/test_mini.jpg。

补充知识:解决django的html无法加载图片的问题

html的代码都是对的

但是django网页加载不出图片

django 读取图片到页面实例

这里来给大家演示一下,因为setting.py少了东西,无法查找图片路径

django 读取图片到页面实例

STATICFILES_DIRS=(
 os.path.join(BASE_DIR,'static'),
)

补上这个代码

django 读取图片到页面实例

html插入图片很简单,我这里就举个栗子

{% load static %} <body background="{% static 'imges/bg.png' %}"></body>

运行一下

django 读取图片到页面实例

ok, nice!

以上这篇django 读取图片到页面实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的常见命令注入威胁
Feb 18 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
Python之文字转图片方法
May 10 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
python制作抖音代码舞
Apr 07 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python实现excel公式格式化的示例代码
Dec 23 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 #Python
django列表筛选功能的实现代码
Mar 27 #Python
python实现猜数游戏
Mar 27 #Python
手把手教你安装Windows版本的Tensorflow
Mar 26 #Python
python pandas.DataFrame.loc函数使用详解
Mar 26 #Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 #Python
Python函数默认参数常见问题及解决方案
Mar 26 #Python
You might like
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python实现异步回调机制代码分享
2014/01/10 Python
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python编程羊车门问题代码示例
2017/10/25 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
pycharm实现猜数游戏
2020/12/07 Python
实习生自荐信范文
2013/11/13 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
教师素质教育心得体会
2016/01/19 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
Python中第三方库Faker的使用详解
2022/04/02 Python