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检测生僻字的实现方法
Oct 23 Python
Python面向对象编程基础解析(二)
Oct 26 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
Python hashlib模块用法实例分析
Jun 12 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python 检查文件mime类型的方法
Dec 08 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python流程控制语句的深入讲解
Jun 15 Python
python判断字符串以什么结尾的实例方法
Sep 18 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
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
Python中操作符重载用法分析
2016/04/29 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
pycharm永久激活超详细教程
2020/10/29 Python
python help函数实例用法
2020/12/06 Python
HTML5进度条特效
2014/12/18 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
和平主题的演讲稿
2014/01/12 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
2014年党总支工作总结
2014/12/18 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
如何Python使用re模块实现okenizer
2022/04/30 Python