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中的map()函数和reduce()函数的用法
Apr 27 Python
Python实现简单字典树的方法
Apr 29 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
Tornado 多进程实现分析详解
Jan 12 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
BeautifulSoup获取指定class样式的div的实现
Dec 07 Python
Python图片处理之图片裁剪教程
May 27 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设计模式之命令模式使用示例
2014/03/02 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
让焦点自动跳转
2006/07/01 Javascript
div层的移动及性能优化
2010/11/16 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
python实现连接mongodb的方法
2015/05/08 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
捐赠仪式主持词
2014/03/19 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
留学推荐信范文
2014/05/10 职场文书
计算机软件专业求职信
2014/06/10 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
政协工作总结2015
2015/05/20 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
MongoDB支持的数据类型
2022/04/11 MongoDB
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL