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 Socket使用实例
Dec 18 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
Django 框架模型操作入门教程
Nov 05 Python
Python实现图片识别加翻译功能
Dec 26 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
Python Selenium异常处理的实例分析
Feb 28 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
如何基于python实现单目三维重建详解
Jun 25 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
PHP 危险函数全解析
2009/09/09 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
php常用字符函数实例小结
2016/12/29 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
php异常处理捕获错误整理
2019/09/23 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
小学家长会邀请函
2014/01/23 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
撤诉申请怎么写
2015/05/19 职场文书
高中军训感想
2015/08/07 职场文书
详细介绍python类及类的用法
2021/05/31 Python
python异常中else的实例用法
2021/06/15 Python
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle