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爬虫爬验证码实现功能详解
Apr 14 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
Python对象转换为json的方法步骤
Apr 25 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python实现求纯色彩图像的边框
Apr 08 Python
k-means & DBSCAN 总结
Apr 27 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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
处理单名多值表单的详解
2013/06/08 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
Python守护进程用法实例分析
2015/06/04 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
python爬虫基础知识点整理
2020/06/02 Python
python 图像增强算法实现详解
2021/01/24 Python
thinkphp5 路由分发原理
2021/03/18 PHP
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
行政人员工作职责
2013/12/05 职场文书
同居协议书范本
2014/04/23 职场文书
教育见习报告范文
2014/11/03 职场文书
养成教育工作总结
2015/08/13 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
Python简易开发之制作计算器
2022/04/28 Python