zoukankan      html  css  js  c++  java
  • django Form组件 上传文件

    上传文件

      注意:FORM表单提交文件要有一个参数enctype="multipart/form-data"

    普通上传:

    urls:

    url(r'^f1/',views.f1),
    url(r'^f2/',views.f2),
    

    views: 

    def f1(request):
        if request.method == "GET":
            return render(request,'f1.html')
    
        else:
            import os #导入os模块
            #request.get / post  /FILES方式.get()取值 去文件name=fafafa的值
            file_obj=request.FILES.get("fafafa")  #拿到一个文件对象
            f=open(os.path.join('static',file_obj.name),'wb') #将文件名加入到static目录下
            for chunk in file_obj.chunks():  #chunk块 文件的大小,循环file_obj文件对象.chunks
                f.write(chunk)#写到文件里面去
            f.close()
            # return HttpResponse(".....")
            return render(request,'f1.html')

    html:  

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

    Form组件上传:

    views:

    class F2Form(Form):
        user=fields.CharField()
        fafafa=fields.FileField()
    
    
    def f2(request):
        if request.method == "GET":
            obj=F2Form()
            return render(request,'f2.html',{'obj':obj})
        else:
            obj=F2Form(data=request.POST,files=request.FILES)  #以POST的方式获取到文件的所有对象
            if obj.is_valid():  #校验拿取的文件对象
               # print(obj.cleaned_data)
                print(obj.cleaned_data.get('fafafa').name) #校验成功 获取上传文件对象的 fafafa 文件名
                print(obj.cleaned_data.get('fafafa').size) #获取文件对象的fafafa size大小
            return render(request,'f2.html',{'obj':obj})  #错误信息的时候 就返回到前端页面 继续上传  

    html:

    <!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 %}
        {{ obj.user }}
        {{ obj.fafafa }}
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
    

      

  • 相关阅读:
    adb 连接 Android 手机的两种方式
    Jmeter GUI及NON GUI下实现分布式
    史上最全最细 App 自动化环境部署
    不懂Java代码,照样把jmeter指定数据写入execl
    Dockerfile 让你轻松创建属于你的镜像 (下)
    Dockerfile 让你轻轻松松创建属于你的镜像 (上)
    Python vs Java (一):史上最全变量类型区别,99.99%的人都收藏了
    浏览器F12调试器定位系统前后端bug
    cookie,session
    App 抓包提示网络异常怎么破?(抓包HTTPS)
  • 原文地址:https://www.cnblogs.com/niejinmei/p/7142526.html
Copyright © 2011-2022 走看看