之前我们学了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>
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>
19 <p></p>
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>
28 <p></p>
30 文件上传
32 <input type="file" value="fa" name="wj">
33 <p></p>
34 <input type="submit" value="提交">
35 </form>
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")
6 print(gender)
7 print(AH)
8 return HttpResponse("ok")
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()
15 return HttpResponse("ok")
17 return render(request,"login.html")
request.GET/POST/FILES(后台获取文件的)
request.GET/POST.getlist("name") 获取chekcbox等多选内容
上传文件,form标签做特殊处理(enctype="multipart/form-data")