对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获取当前时间的方法
Jan 14 Python
Python常用模块介绍
Nov 21 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Python中偏函数用法示例
Jun 07 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python爬取微信公众号文章的方法
Feb 26 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
解决django FileFIELD的编码问题
Mar 30 Python
python安装读取grib库总结(推荐)
Jun 24 Python
Python 合并拼接字符串的方法
Jul 28 Python
python两种注释用法的示例
Oct 09 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 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php类常量用法实例分析
2015/07/09 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
写好自荐信的技巧
2013/11/08 职场文书
需求分析说明书
2014/05/09 职场文书
历史学专业求职信
2014/06/19 职场文书
php png失真的原因及解决办法
2021/11/17 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
Python绘制散乱的点构成的图的方法
2022/04/21 Python