Django 前端向后台post提交数据

简介:

Django里面,通过Html页面提交的数据,可以通过在View里面定义的函数通过request参数获取。简单的说,主要可以分出3种情况。


  1. HTML页面传递来的单个数据, 比如radiobox或者text 可以通过request.POST.get获取

  2. HTML页面传递来多个数据,比如checkbox或者option, 可以通过request.POST.getlist获取

  3. HTML页面上传了一个文件,html端需要表明enctype,表示这是一个文件而不是字符串;后台需要通过request.FILES.get获取这个文件的地址,然后通过chunk分块写入指定的地址


现在来看看实例:

HTML页面

upload.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE html>
< html  lang = "en" >
< head >
     < meta  charset = "UTF-8" >
     < title >Title</ title >
</ head >
< body >
     < form  action = "/upload/"  method = "POST"  enctype = "multipart/form-data" >
         < p >
             < input  type = "text"  name = "user"  placeholder = "用户名"  />
         </ p >
         < p >
             < input  type = "password"  name = "pwd"  placeholder = "密码"  />
         </ p >
         < p >
             性别:
             男< input  type = "radio"   name = "gender"  value = "1" />
             女< input  type = "radio"  name = "gender"  value = "2" />
             中< input  type = "radio"  name = "gender"  value = "3" />
         </ p >
         < p >
             爱好:
             音乐< input  type = "checkbox"   name = "favor"  value = "11" />
             武术< input  type = "checkbox"  name = "favor"  value = "22" />
             电玩< input  type = "checkbox"  name = "favor"  value = "33" />
         </ p >
         < p >
             < select  name = "city"  multiple>
                 < option  value = "sh" >上海</ option >
                 < option  value = "bj" >北京</ option >
                 < option  value = "tj" >天津</ option >
             </ select >
         </ p >
         < p >
             < input  type = "file"  name = "fafafa"  enctype = "multpart/form-data" />
         </ p >
         < input  type = "submit"  value = "提交" />
     </ form >
</ body >
</ html >


视图函数

view.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def  upload(request):
     if  request.method  = =  "GET" :
         return  render(request,  'upload.html' )
     elif  request.method  = =  "POST" :
         v = request.POST.get( 'user' )
         print (v)
         # radio
         =  request.POST.get( 'gender' )
         print (v)
         =  request.POST.getlist( 'favor' )
         print (v)
         =  request.POST.getlist( 'city' )
         print (v)
         obj  =  request.FILES.get( 'fafafa' )
         print (obj,  type (obj), obj.name)
         import  os
         file_path  =  os.path.join( 'upload' , obj.name)
         print (file_path)
         =  open (file_path, mode = "wb" )
         for  in  obj.chunks():
             f.write(i)
         f.close()
         from  django.core.files.uploadedfile  import  InMemoryUploadedFile
         return  render(request,  'upload.html' )
     else :
         # PUT,DELETE,HEAD,OPTION...
         return  redirect( '/upload/' )


界面


输入下面的值进行提交

wKioL1ldy6viwlKpAABjBmpovbE418.jpg

成功获取结果


1
2
3
4
5
6
7
8
9
10
11
12
System check identified no issues ( 0  silenced).
July  06 2017  -  15 : 25 : 56
Django version  1.11 , using settings  'Django.settings'
Starting development server at http: / / 127.0 . 0.1 : 8000 /
Quit the server with CTRL - BREAK.
阿拉丁
2
[ '22' '33' ]
[ 'bj' 'tj' ]
statements.pdf < class  'django.core.files.uploadedfile.InMemoryUploadedFile' > statements.pdf
upload\statements.pdf
[ 06 / Jul / 2017  15 : 26 : 10 "POST /upload/ HTTP/1.1"  200  1267


确认成功上传文件

wKiom1ldy63Ad6QTAACL_l5XBXU868.jpg






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1944978,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
前端开发 JavaScript 数据安全/隐私保护
推荐6款超级好看的开源中后台前端框架
推荐6款超级好看的开源中后台前端框架
56 0
|
2月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
64 2
|
3月前
|
前端开发 JavaScript 关系型数据库
若依框架------后台路由数据是如何转换为前端路由信息的
若依框架------后台路由数据是如何转换为前端路由信息的
108 0
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
86 7
|
14天前
|
供应链 JavaScript 前端开发
使用Django和Vue实现电子商务网站的后端和前端
【4月更文挑战第10天】本文介绍了使用Django和Vue构建电子商务网站的后端与前端方法。Django作为Python的Web框架负责后端,其模型-视图-控制器设计简化了商品管理、购物车和订单处理。Vue.js用于前端,提供数据驱动和组件化的用户界面。通过定义Django模型和视图处理请求,结合Vue组件展示商品和管理购物车,开发者可构建交互性强的电商网站。虽然实际开发涉及更多细节,但本文为入门提供了基础指导。
|
1月前
|
测试技术 数据库 数据安全/隐私保护
实现Django Models的数据mock
实现Django Models的数据mock
25 0
|
2月前
|
缓存 前端开发 安全
究竟何为GET,何为POST?前端程序员的必修课
究竟何为GET,何为POST?前端程序员的必修课
58 0
|
3月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
3月前
|
监控 小程序 前端开发
C#医院预约挂号小程序源码(前端+后台)
线上预约挂号系统构建了医院和患者的连接,通过改善患者院内的就医服务流程,以微信公众号、支付宝小程序为患者服务入口,为居民提供导诊、预约、支付、报告查询等线上线下一体化的就医服务,缩短患者就诊环节,提高医疗机构服务效率。
83 0
|
3月前
|
JSON 前端开发 数据格式
【前后端交互】前端提交数据到后端方式解析
【1月更文挑战第15天】【前后端交互】前端提交数据到后端方式解析