django返回图片给html页面,django 读取图片到页面实例

django 读取图片到页面实例

发布时间:2020-08-30 04:11:07

来源:脚本之家

阅读:106

作者:zhangyu4863

首先,我们看看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/下面的,所以图片的路径就是:

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

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

html的代码都是对的

但是django网页加载不出图片

556476e14b9ba89d99b3711229858caf.png

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

7ab0e68c661c56347a79ca4bcc112023.png

STATICFILES_DIRS=(

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

)

补上这个代码

d6b156d54a22ea249e79dd2bd5596b60.png

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

{% load static %}

运行一下

a7f3a10265888d36a727222bee81fcbf.png

ok, nice!

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个使用Python编写的开源Web应用程序框架,其提供了一套完整的开发工具和库用于快速构建高性能的Web应用程序。 一个Django项目实例源码是指一个完整的、可以在Django框架下运行的Web应用程序的源代码。 一个典型的Django项目实例源码通常包括以下几个方面: 1. 项目结构:包含了项目的目录结构,其中主要包括Django的工程文件(settings.py、urls.py等)以及应用程序(App)的目录结构。 2. 数据模型:通过定义模型类,实现数据库表的映射,并定义各个表之间的关联关系。在模型类中可以定义字段、方法和属性,用于操作和处理数据。 3. 视图(View):视图处理请求并作出响应,负责读取、解析和处理用户的请求,然后生成相应的结果。视图可以通过模板(Template)将处理结果渲染成HTML页面返回给用户。 4. 模板:模板用于生成最终的HTML页面,包括页面的布局、样式和逻辑。模板中可以使用Django提供的模板标签和过滤器来实现动态页面的渲染。 5. URL配置:通过定义URL规则,将不同的URL请求映射到对应的视图函数上。URL配置文件(urls.py)中定义了每个URL和视图函数的对应关系。 6. 静态文件:项目实例源码中还包含了静态文件,如CSS、JavaScript和图片等。这些文件通常存放在项目的静态文件目录中,并通过Django的静态文件处理机制进行管理和分发。 通过这些组成部分,一个Django项目实例源码能够实现包括用户认证、权限管理、数据增删改查等常见的Web应用程序功能。开发者可以根据具体需求进行定制和扩展,实现更加复杂和强大的功能。同时,Django还提供了丰富的第三方插件和库,便于开发者进行功能扩展和集成,加速开发周期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值