对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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python简单进程锁代码实例
Apr 27 Python
python实现获取Ip归属地等信息
Aug 27 Python
Pycharm学习教程(2) 代码风格
May 02 Python
python实现二分查找算法
Sep 21 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
python实现求特征选择的信息增益
Dec 18 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Django 限制访问频率的思路详解
Dec 24 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
Pandas之缺失数据的实现
Jan 06 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
收集的DedeCMS一些使用经验
2007/03/17 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
自己封装的javascript事件队列函数版
2014/06/12 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
python中文编码问题小结
2014/09/28 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
对pandas中Series的map函数详解
2018/07/25 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
大学生的应聘自我评价
2013/12/13 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
保安2014年终工作总结
2014/12/06 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技