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下进行UDP网络编程的教程
Apr 29 Python
python+django快速实现文件上传
Oct 24 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
Python with标签使用方法解析
Jan 17 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
如何利用python生成MD5并去重
Dec 07 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
农民C键的运用技巧
2020/03/04 星际争霸
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
python3操作mysql数据库的方法
2017/06/23 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python模块相关知识点小结
2020/03/09 Python
python实现飞机大战项目
2020/03/11 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
个人工作主要事迹
2014/05/08 职场文书
本科生自荐信
2014/06/18 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
考研复习计划
2015/01/19 职场文书
年度考核表个人总结
2015/03/06 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书