对Django 中request.get和request.post的区别详解


Posted in Python onAugust 12, 2019

Django 中request.get和request.post的区别

POST和GET差异:

POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。

POST和GET都可以与服务器完成查,改,增,删操作。

GET提交,请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接;

POST提交,把提交的数据放置在HTTP包的包体中;因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。

GET属性

1、QueryDict类型的对象

2、包含get请求方式的所有参数

3、与url请求地址中的参数对应,位于?后面

4、参数的格式是键值对,如key1=value1

5、多个参数之间,使用&连接,如key1=value1&key2=value2

6、键是开发人员定下来的,值是可变的

示例如下

创建视图getTest1用于定义链接,getTest2用于接收一键一值,getTest3用于接收一键多值

def getTest1(request):
  return render(request,'booktest/getTest1.html')
def getTest2(request):
  return render(request,'booktest/getTest2.html')
def getTest3(request):
  return render(request,'booktest/getTest3.html')

**配置url

url(r'^getTest1/$', views.getTest1),
url(r'^getTest2/$', views.getTest2),
url(r'^getTest3/$', views.getTest3),

**创建getTest1.html,定义链接

<html>
<head>
  <title>Title</title>
</head>
<body>
链接1:一个键传递一个值
<a href="/getTest2/?a=1&b=2" rel="external nofollow" >gettest2</a><br>
链接2:一个键传递多个值
<a href="/getTest3/?a=1&a=2&b=3" rel="external nofollow" >gettest3</a>
</body>
</html>

**完善视图getTest2的代码

def getTest2(request):
  a=request.GET['a']
  b=request.GET['b']
  context={'a':a,'b':b}
  return render(request,'booktest/getTest2.html',context)

**创建getTest2.html,显示接收结果

<html>
<head>
  <title>Title</title>
</head>
<body>
a:{{ a }}<br>
b:{{ b }}
</body>
</html>

**完善视图getTest3的代码

def getTest3(request):
  a=request.GET.getlist('a')
  b=request.GET['b']
  context={'a':a,'b':b}
  return render(request,'booktest/getTest3.html',context)

**创建getTest3.html,显示接收结果

<html>
<head>
  <title>Title</title>
</head>
<body>
a:{% for item in a %}
{{ item }}
{% endfor %}
<br>
b:{{ b }}
</body>
</html>

POST属性

1、QueryDict类型的对象

2、包含post请求方式的所有参数

3、与form表单中的控件对应

4、问:表单中哪些控件会被提交?

答:控件要有name属性,则name属性的值为键,value属性的值为键,构成键值对提交。

对于checkbox控件,name属性一样为一组,当控件被选中后会被提交,存在一键多值的情况,键是开发人员定下来的,值是可变的

示例如下

定义视图postTest1

def postTest1(request):
  return render(request,'booktest/postTest1.html')

**配置url

url(r'^postTest1$',views.postTest1)

**创建模板postTest1.html

<html>
<head>
  <title>Title</title>
</head>
<body>
<form method="post" action="/postTest2/">
  姓名:<input type="text" name="uname"/><br>
  密码:<input type="password" name="upwd"/><br>
  性别:<input type="radio" name="ugender" value="1"/>男
  <input type="radio" name="ugender" value="0"/>女<br>
  爱好:<input type="checkbox" name="uhobby" value="吃"/>吃
  <input type="checkbox" name="uhobby" value="笑"/>笑
  <input type="checkbox" name="uhobby" value="酒"/>酒
  <input type="checkbox" name="uhobby" value="爬山"/>爬山<br>
  <input type="submit" value="提交"/>
</form>
</body>
</html>

**创建视图postTest2接收请求的数据

def postTest2(request):
  uname=request.POST['uname']
  upwd=request.POST['upwd']
  ugender=request.POST['ugender']
  uhobby=request.POST.getlist('uhobby')
  context={'uname':uname,'upwd':upwd,'ugender':ugender,'uhobby':uhobby}
  return render(request,'booktest/postTest2.html',context)

**配置url

url(r'^postTest2$',views.postTest2)

**创建模板postTest2.html

<html>
<head>
  <title>Title</title>
</head>
<body>
{{ uname }}<br>
{{ upwd }}<br>
{{ ugender }}<br>
{{ uhobby }}
</body>
</html>

以上这篇对Django 中request.get和request.post的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络爬虫采集联想词示例
Feb 11 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
python简单实现操作Mysql数据库
Jan 29 Python
python解决字符串倒序输出的问题
Jun 25 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
详解python中init方法和随机数方法
Mar 13 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
django框架auth模块用法实例详解
Dec 10 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 #Python
Python简易版停车管理系统
Aug 12 #Python
Python代码实现http/https代理服务器的脚本
Aug 12 #Python
Django admin model 汉化显示文字的实现方法
Aug 12 #Python
Python简易版图书管理系统
Aug 12 #Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 #Python
python中eval与int的区别浅析
Aug 11 #Python
You might like
php json与xml序列化/反序列化
2013/10/28 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
详解在React里使用&quot;Vuex&quot;
2018/04/02 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
深入学习python多线程与GIL
2019/08/26 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Python中私有属性的定义方式
2020/03/05 Python
django配置app中的静态文件步骤
2020/03/27 Python
python 5个实用的技巧
2020/09/27 Python
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
J2EE面试题
2016/03/14 面试题
剪彩仪式主持词
2014/03/19 职场文书
无罪辩护词范文
2015/05/21 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Redis 常见使用场景
2021/08/30 Redis
Nginx内网单机反向代理的实现
2021/11/07 Servers
Java中的继承、多态以及封装
2022/04/11 Java/Android