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 相关文章推荐
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
python获取本机所有IP地址的方法
Dec 26 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
python装饰器代替set get方法实例
Dec 19 Python
Pytorch中.new()的作用详解
Feb 18 Python
python读取mysql数据绘制条形图
Mar 25 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python如何执行系统命令
Sep 23 Python
Pycharm github配置实现过程图解
Oct 13 Python
python爬虫调度器用法及实例代码
Nov 30 Python
Django中celery的使用项目实例
Jul 07 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个人网站架设连环讲(三)
2006/10/09 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
详解Python中for循环的使用
2015/04/14 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
python 实现端口扫描工具
2020/12/18 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
离婚协议书格式
2015/01/26 职场文书
预备党员个人总结
2015/02/14 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript