对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读取Android permission文件
Nov 01 Python
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
Python常用模块之requests模块用法分析
May 15 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
Python 如何实现数据库表结构同步
Sep 29 Python
Python实现打乒乓小游戏
Sep 25 Python
bat批处理之字符串操作的实现
Mar 16 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+mysql写的简单留言本实例代码
2008/07/25 PHP
php smarty的预保留变量总结
2008/12/04 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
如何利用python读取micaps文件详解
2020/10/18 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
考试作弊检讨书
2014/10/21 职场文书
布达拉宫导游词
2015/02/02 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
关于mysql中string和number的转换问题
2022/06/14 MySQL