day18-django 单选框,多选框,文件上传后台获取数据


一、引子

  之前我们学了django 往后台提交数据的方法,get(在url 中拼接),post (request中POST) ,后台获取数据的方法用get方法获取数据(renquest.GET.get/request.POST.get)。

今天我们学习,当往后台提交单选框,多选框,文件上传时,后台如何获取数据。

二、单选框,多选框后台获取数据

  2.1 单选框后台一样用get 获取数据,

  2.2 多选框 后台使用 getlist 获取数据,获取到一个列表,

  html文件:  

  

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <h1> 注册页面</h1>
 9     <h5> 多选框,单选框,文件传送到后台</h5>
10     <h5>多选框后台用 getlist,之前学习的都是get 方法</h5>
11 
12     <form action="\login\" method="post" enctype="multipart/form-data">
13         性别选项:
14         <p></p>
15         <!--  单选框 互斥 使用同一个  name 之前在html已经有学习到了,-->
16         <p>男:<input type="radio" name="gender" value="1"></p>
17         <p>女:<input type="radio" name="gender"  value="0"></p>
18 
19         <p></p>
20 
21         爱好选项:
22             <!--  多选框 使用同一个  name 之前在html已经有学习到了,-->
23         <p>篮球:<input type="checkbox" name="aihao" value="LQ"></p>
24         <p> 排球:<input type="checkbox" name="aihao" value="PQ"></p>
25         <p>足球:<input type="checkbox" name="aihao" value="ZQ"></p>
26         <p>看球:<input type="checkbox" name="aihao" value="KQ"></p>
27 
28         <p></p>
29 
30         文件上传
31 
32         <input type="file" value="fa" name="wj">
33         <p></p>
34         <input type="submit" value="提交">
35     </form>
36 
37 </body>
38 </html>

后台获取数据:

后台代码

 1 def login(request):
 2     if request.method=="POST":
 3         gender=request.POST.get("gender")
 4         AH=request.POST.getlist("aihao")
 5         
 6         print(gender)
 7         print(AH)
 8         return HttpResponse("ok")
 9 
10     return render(request,"login.html")

三、上传文件到后台

  3.1 文件上传后台,需要在 form 标签中添加  

    enctype="multipart/form-data"

  views 代码

 1 def login(request):
 2     if request.method=="POST":
 3         gender=request.POST.get("gender")
 4         AH=request.POST.getlist("aihao")
 5         # print(gender)
 6         # print(AH)
 7         obj=request.FILES.get("wj")   
 8         print(type(obj))
 9         filepath=os.path.join("upload",obj.name)
10         f=open(filepath,mode='wb')
11         for i in obj.chunks():
12             f.write(i)
13         f.close()
14 
15         return HttpResponse("ok")
16 
17     return render(request,"login.html")

四、总结

  1.  request.GET/POST/FILES(后台获取文件的)
  2. request.GET/POST.getlist("name")   获取chekcbox等多选内容
  3. 上传文件,form标签做特殊处理(enctype="multipart/form-data")
1
2
3
4
5
6
7
8
9
obj  =  request.FILES.get( "name" )
 
obj.name
 
=  open (obj.name,mode = "wb" )
 
for  item  in  obj.chunks():
     f.write(item)
f.close()

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM