zoukankan      html  css  js  c++  java
  • Django获取多个数据及文件上传

    1. 选择性别:

    1)更新login.html模板

    2)views.py中获取客户端提交的数据

    3)当选择性别为“男”后,后台得到了gender=1.

    2.选择爱好,可以多选,所以后台会获得多个数据。

    radio单个数据的获取方法: v1=request.POST.get('gender') 
    checkbox多个数据的获取方法: v2=request.POST.getlist
    ('favor')

    1)更新login.html模板

    2)views.py中获取客户端提交的数据

    3)当选择爱好为“篮球,读书”后,后台得到了favor=11,22两个值。

    3. select标签,默认是单选,也可以多选。不同的方法对应不同的获取函数

    4. 上传文件

    4.1 发现用get的方法只获取到了文件名,却不见文件的内容。其实文件内容没有放到POST里面,而是放到了FILES里面。

    本质:上传的时候,所有的内容都上传到了FILES里面了,request.POST.get 只是到FILES里面把文件名取出来了,而没有提取文件内容。

    4.2

    在form表单中上传的有两类数据,

    一类是普通数据(字符串),所有数据将在POST里面得到。

    一类是文件,form表单中要加上:enctype="multipart/form-data", 表示上传的是文件。所有数据将在FILES中得到。

    拿到的是类的对象,看起来像是个文件名,可以打印一下它的数据类型。

     

    4.3 拿到文件后保存在服务器上,完成上传的功能。服务器端取数据的时候是分块取的,chunks(中文:块)就是一块一块的集合。

    上传文件是一点一点上传的,取数据也是一点一点取的。f=open(obj.name,mode='wb'), 打开一个与上传文件同名的文件,把上传的文件写入进来。

    修改views.py程序如下:

    运行结果,上传成功。

    4.4 把上传的文件都放到upload文件夹里面。

    新建1个upload文件夹

    插播一下os.path.join的 用法

    os.path模块主要用于文件的属性获取,

    os.path模块主要用于文件的属性获取.
    
    os.path.join(path1[, path2[, ...]]) 
    将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。 
     
    >>> os.path.join('c:\', 'csv', 'test.csv') 
    'c:\csv\test.csv' 
    >>> os.path.join('windows	emp', 'c:\', 'csv', 'test.csv') 
    'c:\csv\test.csv' 
    >>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c') 
    '/home/aa/bb/c' 
    

     修改views.py

    运行结果,上传成功,并且上传到了指定的upload路径下面

    客户端发送请求到服务器端,内容包含请求头,请求尾,请求的内容。

    表单是表单,文件是文件。表单的数据全部提取到POST里面,文件的内容会全部提取到FILES里面,所以调用的时候会分开。

  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/momo8238/p/7509469.html
Copyright © 2011-2022 走看看