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之不要红头文件(2)
Sep 28 Python
django 自定义用户user模型的三种方法
Nov 18 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
python命名空间(namespace)简单介绍
Aug 10 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python logging模块原理解析及应用
Aug 13 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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循环table实现一行两列显示的方法
2015/06/04 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
js实现批量删除功能
2020/08/27 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
Python栈类实例分析
2015/06/15 Python
Django框架中方法的访问和查找
2015/07/15 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python算的上脚本语言吗
2020/06/22 Python
美的官方商城:Midea
2016/09/14 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
找工作求职信
2014/07/07 职场文书
三严三实对照检查材料
2014/09/22 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
党性分析自查总结
2014/10/14 职场文书
2016年党建工作简报
2015/11/26 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang