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获得图片base64编码示例
Jan 16 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
python中使用zip函数出现错误的原因
Sep 28 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
浅析Python中字符串的intern机制
Oct 03 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
jquery 面包屑导航 具体实现
2013/06/05 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
Python+微信接口实现运维报警
2016/08/27 Python
使用Python绘制图表大全总结
2017/02/11 Python
python中关于for循环的碎碎念
2017/06/30 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Python内建模块struct实例详解
2018/02/02 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
建筑工程自我鉴定
2013/10/18 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
垃圾桶标语
2014/06/24 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技