django 通过URL访问上传的文件方法


Posted in Python onJuly 28, 2019

Django2.0 通过URL访问上传的文件(pdf、picture等)

Django是一个成熟的web框架,基于python实现,有很多的优点,很容易快速上手(详见官网:https://www.djangoproject.com/)的文档,Django2.0的文档有1872页,不得不说是非常全的,文档是可谓包罗万象。

Django给我的感觉是很好很强大,至少比flask要完整的多,如果实现一个简单的需求,flask足够了,不过要安装各种依赖包,一个字繁琐!而Django则集成了非常非常全的功能,不一一讨论吧,下面聊一下我遇到的问题及解决的办法,从网上找了很久很久,始终难以有一个完整的方法,立此存照吧。

问题:Django上传文件很容易,那么,如何在网页中通过链接的方式访问(打开文件、预览图片、rar)文件呢?

准备环境

django 通过URL访问上传的文件方法

首先是开发环境的搭建:Python、Django、pycharm、mysql的安装(略过,网上有很多教程)

在pycharm中创建Django的工程,其目录结构如下:

说明:

Resource_Management_System是工程目录

rms是Django中app的目录(存放业务代码的地方)

在Resource_Management_System目录,新建了media目录和media的子目录upload(用于存储上传的各种文件,实际中可能要对目录再进行规划)

上传文件

Python上传文件的代码,为了简单起见,直接在app的views.py中书写上传文件的代码,如下:

django 通过URL访问上传的文件方法

说明:

上传文件使用的是POST请求,文件的KEY值是“test.shlian”

通过request.FILE.get()取到上传的文件对象

39-42行,是具体的写文件代码,把文件写到MEDIA_ROOT目录的upload目录

43-44行,返回结果。

由于是示例,所以代码简单,没有做任何的异常处理。

写完代码以后,还不能通过url上传文件,需要做如下的配置:

配置settings.py,增加上面代码使用的MEDIA_ROOT和后面即将使用的MDEIA_URL变量,如下:

django 通过URL访问上传的文件方法

一切就绪,通过url上传文件的配置:

django 通过URL访问上传的文件方法

完成上述配置以后,打开cmd命令行窗口,切换到Resource_Management_System目录,执行命令:“python manage.py runserver 127.0.0.1:8000”,如果没有错误,会出现下面的界面:

django 通过URL访问上传的文件方法

至此,基于Django框架的支持文件上传的app,已经成功启动了。

通过postman测试文件上传

打开postman,完成如下配置,并点击”Send”,发送POST请求,

django 通过URL访问上传的文件方法

上传成功后的显示:

django 通过URL访问上传的文件方法

切换到setting.MEDIA_ROOT目录,显示如下:

django 通过URL访问上传的文件方法

恭喜!文件上传成功!接下来,讨论另外一个问题:如何通过URL访问上传的这个PDF文件呢?

通过URL访问上传的pdf文件(当然也可以访问其他类型的文件),主要是Django的配置了,主要是配置工程的urls.py文件,配置如下:

django 通过URL访问上传的文件方法

说明:

Import 19-21行的库

增加25行,到urlpatterns,

通过浏览器打开上传的文件:

django 通过URL访问上传的文件方法

再看一下上传的png文件:

django 通过URL访问上传的文件方法

以上这篇django 通过URL访问上传的文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的time模块与datetime模块用法总结
Jun 30 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python画双y轴图像的示例代码
Jul 07 Python
django 信号调度机制详解
Jul 19 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
python3.x中安装web.py步骤方法
Jun 23 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
python装饰器代码解析
Mar 23 Python
django使用admin站点上传图片的实例
Jul 28 #Python
Python中变量的输入输出实例代码详解
Jul 28 #Python
对django中foreignkey的简单使用详解
Jul 28 #Python
解决django 新增加用户信息出现错误的问题
Jul 28 #Python
Django使用Channels实现WebSocket的方法
Jul 28 #Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 #Python
Python assert语句的简单使用示例
Jul 28 #Python
You might like
使用无限生命期Session的方法
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP实现递归无限级分类
2015/10/22 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
jquery实现图片上传前本地预览
2017/04/28 jQuery
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
jQuery中extend函数简单用法示例
2017/10/11 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
socket在egg中的使用实例代码详解
2019/05/30 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python中按键来获取指定的值
2019/03/02 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
python3代码中实现加法重载的实例
2020/12/03 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
《天安门广场》教学反思
2014/04/23 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
小学校长个人总结
2015/03/03 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android