Django如何上传图片并对上传图片进行访问
通过一个示例的完整演示过程,来学习django如何上传图片,以及对于media文件夹中的上传图片进行请求:
1.配置settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media').replace('\\','/') #用于存储和访问上传图片的根目录
2.配置urls.py
2.1 根级
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.views.static import serve urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^',include('user.urls')),
url(r'media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}), #访问上传图片时需要配置
] 3.定义models.py
from django.db import models class Goods(models.Model):
name = models.CharField(max_length=20)
img = models.ImageField(upload_to='goods/',default='goods/default.jpg',null=True,blank=True)
# upload_to这个属性必须得有,后面是基于MEDIA_ROOT的相对路径,上传文件时,django会自动帮我们创建这一系列文件夹并存储文件 4.定义views.py
# 上传图片页
def upload_pic(request):
return render(request,'user/upload_pic.html') # 对上传图片进行处理
def handle_pic(request):
if request.method == 'POST':
goods_name = request.POST.get('goods_name')
pic_obj = request.FILES.get('picture') # 得到的是一个图片对象 # 数据库中存储的是路径,并非图片本身
goods = Goods()
goods.name = goods_name
goods.img = pic_obj
goods.save()
return redirect('/show_pic/')
else:
return HttpResponse('上传图片失败')
# 对上传图片进行显示
def show_pic(request):
# 获取商品名goods001所对应的图片路径
goods1 = Goods.objects.get(name='goods001')
img = goods1.img
context = {'img':img}
return render(request,'user/show_pic.html',context)
5.定义上传页模板upload_pic.html以及上传页页面显示
5.1 upload_pic.html:
# 表单中有提交文件的控件时,提交方式必须是post,并且需要设置enctype属性
5.2 上传页页面显示:
6.上传文件后图片存储路径

# media文件夹及其内部的文件夹和文件,均由django自动帮我们生成
7.上传文件后数据库中的存储内容

# 存储的是图片相对于media文件夹的相对路径,即models.py中定义的upload_to="goods/"+图片文件名
8.访问media中上传过的图片 8.1 show_pic.html:
# 同静态文件/static/访问一样,/media/后面直接写上media文件夹下的文件名,就可以直接请求到上传图片资源
8.2 页面显示

在地址栏直接对media中的图片进行访问效果一样,如下:(通常我们不会以这种方式直接请求)

Django如何上传图片并对上传图片进行访问的更多相关文章
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- django之创建第4-3个项目-访问list数据
1.index <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- django之创建第4-2个项目-访问class类属性和类方法
1.修改index <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Django上传文件和上传图片(不刷新页面)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- django中利用FastDFS来上传图片的流程
好处:海量问题,存储容量扩展方便,文件内容重复并且对静态文件的访问也有了提升等.
- 手动上传图片到nginx下可访问,程序上传后访问图片报403
1. 首先查看文件权限 2. 初步确定是服务器权限问题 2.1 解决方案一:更改文件权限 2.2 解决方案二:修改nginx运行用户 1. 首先查看文件权限 #指令如下 ls -l 2. 初步确定是服 ...
- fdfs上传图片成功在浏览器中访问不到404 Not Found
1.检查自己nginx配置文件,看是否有 user root这行 . 在nginx.conf文件里加一条:user root; 2.检查自己配置文件: storage.conf中的文件路径是否正确 ...
- axios上传图片(及vue上传图片到七牛))
浏览器上传图片到服务端,我用过两种方法: 1.本地图片转换成base64,然后通过普通的post请求发送到服务端. 操作简单,适合小图,以及如果想兼容低版本的ie没办法用此方法 2.通过form表单提 ...
- Web Api 上传图片,解决上传图片无格式
制作这个功能时,找了很多资料,不过忘记了地址,所以就不一一放连接了, 直接上代码吧! 1. 首先新建一个上传的控制器 /// <summary> /// 上传 /// </summa ...
随机推荐
- [Abp vNext 入坑分享] - 7.Automapper与validation的使用
简要说明 [项目源码] [章节目录] 本文主要介绍Automapper与Validation的使用方法.首先使用Automapper的目的是引入组件完成entity与dto之间的转换以达到简化代码的目 ...
- NetCore项目实战篇07---服务保护之polly
1. 为什么要用polly 前面的项目中,一个服务调用另一个(Zhengwei.Identity调用Zhengwei.Use.Api)服务时是直接调用的,在这个调用的过程中可能会发生各种瞬态故障,这 ...
- mysql运维入门6:MySQL读写分离
Amoeba 以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy 集中想用应用的请求,根据用户事先设置的规则,将SQL请求发送到特定的数据库上执行 基于此可以实现负载均衡.读写分离 ...
- J2EE项目分类管理中,提交表单数据是二进制形式时,对数据的修改失败。category赋值失败。
原因: 在条件判断时,对字符串的比较进行了错误比较. 解决方法: A==B,比较的是两个字符串是否是同一个对象. A.equal(B),比较的是两个字符串内容是否相同. 出现错误是用了第一种比较,应该 ...
- python-基站位置查询
本文采用的接口是聚合数据提供的 python2.7环境,3.x环境试了下好像不支持,获取位置信息为空 如下为运用代码: #coding=utf-8 ''' Created on 2019年9月18日 ...
- 第4章 最基础的分类算法-k近邻算法
思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...
- OpenStack的Heat组件详解
一:简介 一.什么Heat 1. Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系.利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自 ...
- (三)vue数据绑定及相应的命令
vue数据绑定及相应的命令 {{ Text }} 双括号进行数据渲染 动态绑定数据 例如:{{message}} data: { return{ message: 'Hello Vue!' } } 2 ...
- SpringBoot外部化配置使用Plus版
本文如有任何纰漏.错误,请不吝指正! PS: 之前写过一篇关于SpringBoo中使用配置文件的一些姿势,不过嘛,有句话(我)说的好:曾见小桥流水,未睹观音坐莲!所以再写一篇增强版,以便记录. 序言 ...
- Java的字节流,字符流和缓冲流对比探究
目录 一.前言 二.字节操作和字符操作 三.两种方式的效率测试 3.1 测试代码 3.2 测试结果 3.3 结果分析 四.字节顺序endian 五.综合对比 六.总结 一.前言 所谓IO,也就是Inp ...


