django1.8使用表单上传文件的实现方法


Posted in Python onNovember 04, 2016

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

Django是一个开放源代码的Web应用框架,由Python写成。

在django中我们可以采用Form类来处理表单,通过实例化处理和在模板中渲染,就可以轻松完成表单的需求,采用django的表单处理方式,能帮我们省去很多的工作,比如验证不能为空,或者要符合某种模式的输入才有效,这些处理起来非常方便,不用自己再单独写代码去验证表单的数据正确性,所以在开发中比较常用,Form提供了很多表单字段,比如日期,文本类型等,如果你熟悉基本的html,学起来会非常容易上手,所以今天我们不打算对每个表单的字段进行逐一说明,今天只说下表单文件的上传,因为这个类型比较特殊,需要一点特殊的处理,我们来创建一个简单的一个实例:

首先我们用Form创建一个简单的表单:

class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()
class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()

这个表单就2个字段,要求用户输入用户名和上传一个文件或图片。

接下来我们放到模板中去渲染,这时候就可以看到一个基本表单了,视图函数如下:

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})

这个函数判断用户的是否为POST请求,如果是并验证是有效的,然后就返回OK,在验证正确和返回OK的中间放我们的上传文件代码,因为只有文件上传成功能返回OK,我们一会说,如果是GET请求,就直接显示一个空表单,让用户输入。

处理上传文件就是往服务器上生成一个文件,并将上传的文件内容写到新的文件中,所以它的基本函数是这样的,接收上传文件对象为参数,然后本地打开一个文件,从上传的文件中读出文件,写入新的文件中,代码如下:

def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)

有了这个上传文件的处理函数,我们就可以进一步完善我们的视图函数里,最终的代码如下:

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})

这样就完成了一个文件的上传,完毕。

以上所述是小编给大家介绍的django1.8使用表单上传文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python编写简单的HTML页面合并脚本
Jul 11 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
keras 如何保存最佳的训练模型
May 25 Python
python 瀑布线指标编写实例
Jun 03 Python
用Python开发app后端有优势吗
Jun 29 Python
python 爬取小说并下载的示例
Dec 07 Python
利用python绘制正态分布曲线
Jan 04 Python
Python+MongoDB自增键值的简单实现
Nov 04 #Python
基于Python的接口测试框架实例
Nov 04 #Python
浅谈Python爬取网页的编码处理
Nov 04 #Python
Django接受前端数据的几种方法总结
Nov 04 #Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 #Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 #Python
浅谈python字典多键值及重复键值的使用
Nov 04 #Python
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
理解JavaScript原型链
2016/10/25 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python工厂函数用法实例分析
2018/05/14 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 实现按对象传值
2019/12/26 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
决心书标准格式
2014/03/11 职场文书
高校教师岗位职责
2014/03/18 职场文书
投资协议书范本
2014/04/21 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers