码迷,mamicode.com
首页 > 编程语言 > 详细

python Django之文件上传

时间:2017-07-05 21:10:32      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:set   int   hunk   action   imp   pre   ipa   字符串   ext   

python Django之文件上传

使用Django框架进行文件上传共分为俩种方式

一、方式一

通过form表单进行文件上传
#=========================================FORM表单上传文件========================================
def f1(request):
#定义f1上传函数
    if request.method==‘GET‘:
#如果是以GET请求
        return render(request,‘f1.html‘)
#返回html模板
    else:
#否则
        import os
#导入模块
        file_obj=request.FILES.get(‘fafafa‘)
#通过文件的方式获取文件
        f=open(os.path.join(‘static‘,file_obj.name),‘wb‘)
#打开一个文件创建一个文件句柄,写的模式打开
        for chunk in file_obj.chunks():
#循环对象(chunks是块 代表大小的意思)
            f.write(chunk)
#循环获得对象并写到文件中
        f.close()
#通过文件句柄,关闭文件
        return render(request,‘f1.html‘)
#返回到html模板

 form表单上传文件

========================form表单html============================
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/f1/" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <p><input type="text" name="user"></p>
    <p><input type="file" name="fafafa"></p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

 

一、方式二

通过form组件进行文件上传

 

#======================================Form组件上传文件========================================
class F2Form(Form):
#定义一个上传类
    user=fields.CharField()
#字段是字符串类型
    fafafa=fields.FileField()
#字段是文件类型


def f2(request):
#定义一个f2上传文件的函数
    import os
#导入模块
    if request.method==‘GET‘:
#如果请求方式GET
        obj=F2Form()
#实例化一个对象
        return render(request,‘f2.html‘,{‘obj‘:obj})
#携带obj对象返回html
    else:
#否则
        obj=F2Form(data=request.POST,files=request.FILES)
#实例化对象obj前端标签input获取的数据以request.POST接收,文件信息以request.FILES接收
        if obj.is_valid():
#通过form组件进行校验如果校验成功就执行下边代码
            print(obj.cleaned_data.get(‘fafafa‘).name)
#打印文件名称
            print(obj.cleaned_data.get(‘fafafa‘).size)
#打印文件大小
            f=open(os.path.join(‘static‘,obj.cleaned_data.get(‘fafafa‘).name),‘wb‘)
#打开文件并创建文件句柄,以写的模式打开
            for chunk in request.FILES.get(‘fafafa‘).chunks():
#循环读取文件对象的内容
                f.write(chunk)
#循环写入到文件中
            f.close()
#通过文件句柄将文件关闭
        return render(request,‘f2.html‘,{‘obj‘:obj})
#携带obj对象返回html模板

 

form组件上传文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="POST" action="/f2/" enctype="multipart/form-data">
        {% csrf_token %}
        <p>{{ obj.user }}</p>
        <p>{{ obj.fafafa }}</p>
        <input type="submit" value="提交" />
    </form>
</body>
</html>

 

python Django之文件上传

标签:set   int   hunk   action   imp   pre   ipa   字符串   ext   

原文地址:http://www.cnblogs.com/guobaoyuan/p/7123168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!