一、引子
之前我们学了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")
四、总结
- request.GET/POST/FILES(后台获取文件的)
- request.GET/POST.getlist("name") 获取chekcbox等多选内容
- 上传文件,form标签做特殊处理(enctype="multipart/form-data")
1
2
3
4
5
6
7
8
9
|
obj
=
request.FILES.get(
"name"
)
obj.name
f
=
open
(obj.name,mode
=
"wb"
)
for
item
in
obj.chunks():
f.write(item)
f.close()
|