3.Python Django之GET请求和POST请求及响应处理

一、请求中的方法

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST向指定资源提交数据进行处理请求(例如:提交表单或者上传文件)。数据被包含在请求体中。PoST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1协议中预留能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或连接。

二、Django中的请求

方法描述
path_infoURL字符串
method字符串,表示HTTP请求方法,常用值:‘GET’、‘POST’
GETQueryDict查询字典的对象,包含get请求方式的所有数据。
POSTQueryDict查询字典的对象,包含post请求方式的所有数据。
FILES类似于字典的对象,包含所有的上传文件信息。
COOKIESPython字典,包含所有的cookie,键和值都为字符串。
session似于字典的对象,表示当前的会话。
body字符串,请求体的内容(POST或PUT)
scheme请求协议(‘http’/‘https’)
request.get_full_path()请求的完整路径
request.META请求中的元数据(消息头),-request.META[‘REMOTE_ADDR’]:客户端IP地址

三、响应状态码

下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 永久重定向-资源(网页等)被永久转移到其他URL
  • 302 - 临时重定向
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

四、Django中的响应对象

构造函数格式:

HttpResponse(content=响应体,content_type=响应体数据类型,status=状态码)

作用:

向客户端浏览器返回响应,同时携带响应体内容

参数:

  • content:表示返回的内容。
  • ststus_code:返回的HTTP响应状态码(默认为200)。
  • content_type:指定返回数据的MIME类型(默认为"text/html")。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。

常用的Content-Type如下:

  • ‘text/html’:默认的html文件
  • ‘text/plain’:纯文本
  • ‘text/css’:css文件
  • ‘text/javascript’:js文件
  • ‘multipart/form-data’:文件提交
  • ‘application/json’:json传输
  • ‘application/xml’:xml文件

HttpResponse子类:

类型作用状态码
HttpResponseRedirect重定向302
HttpResponseNotModified未修改304
HttpResponseBadRequest错误请求400
HttpResponseNotFound没有对应的资源404
HttpResponseForbidden请求被禁止403
HttpResponseServerError服务器错误500

五、GET请求实例测试

Python利用Django创建mysite工程,添加views.py文件,如下图示:

在这里插入图片描述

urls.py文件代码:

from django.contrib import admin
from django.urls import path, re_path
from . import viewsurlpatterns = [path('admin/', admin.site.urls),# http://127.0.0.1:8000/test_requestpath('test_request/', views.test_request),
]

views.py文件代码:

from django.http import HttpResponsedef test_request(request):print('path info is : ', request.path_info)print('method is : ', request.method)print('querystring is : ', request.GET)print('full path is :', request.get_full_path())print('客户端IP is :', request.META['REMOTE_ADDR'])return HttpResponse('test request ok')

编译运行后,在浏览器地址栏输入:http://127.0.0.1:8000/test_request/?m=1&n=2效果如下:
在这里插入图片描述
在这里插入图片描述

六、GET处理和POST处理

定义:

无论是GET还是POST,统一都由视图函数接收请求,通过判断request.method区分具体的请求动作。

在这里插入图片描述

GET处理:

GET请求动作,一般用于向服务器获取数据。

能够产生GET请求的场景:

  • 浏览器地址栏中输入URL,回车后

  • <a href="地址?参数=值&参数=值">

  • form表单中的method为get

在这里插入图片描述

POST处理:

POST请求动作,一般用于向服务器提交大量/隐私数据。

客户端通过表单等POST请求将数据传递给服务端。

服务器端接收参数,通过request.method来判断是否为POST请求。

在这里插入图片描述
在这里插入图片描述

七、GET处理和POST处理实例测试

urls.py文件代码:

from django.contrib import admin
from django.urls import path, re_path
from . import viewsurlpatterns = [path('admin/', admin.site.urls),# http://127.0.0.1:8000/main_pagepath('main_page/', views.main_page),# http://127.0.0.1:8000/test_get_postpath('test_get_post/', views.test_get_post),
]

views.py文件代码:

from django.http import HttpResponse, HttpResponseRedirectPOST_FORM = '''
<form method='post' action='/test_get_post/'>用户名:<input type='text' name='uname'><input type='submit' value='提交'>
</form>
'''def main_page(request):html = """<h4>这是我的网站首页</h4><a href="http://www.datutusuibi.com/" target="_blank">大土土随笔</a>"""return HttpResponse(html)def test_get_post(request):if request.method == 'GET':print(request.GET)print(request.GET['m'])print(request.GET.getlist('m'))print(request.GET.get('t', 'no t'))return HttpResponse(POST_FORM)elif request.method == 'POST':# 处理用户提交数据print('uname is : ', request.POST['uname'])return HttpResponseRedirect('/main_page/')else:passreturn HttpResponse('test get post ok')

使用POST方式接收客户端数据时,需要取消csrf验证。

编译运行后,在浏览器地址栏输入:http://127.0.0.1:8000/test_get_post/?m=1&n=2&m=3效果如下:

在这里插入图片描述
在这里插入图片描述

输入用户名,单击“提交”按钮,

在这里插入图片描述

效果如下:

在这里插入图片描述
在这里插入图片描述


获取更多资料,请访问大土土随笔

如果本文对您有所帮助,请关注微信公众号“捷创源科技”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官 | Java中的注解是如何工作的?

自Java5.0版本引入注解之后&#xff0c;它就成为了Java平台中非常重要的一部分。开发过程中&#xff0c;我们也时常在应用代码中会看到诸如Override&#xff0c;Deprecated这样的注解。这篇文章中&#xff0c;我将向大家讲述到底什么是注解&#xff1f;为什么要引入注解&#x…

Linux mint 17中文输入法安装,改动linux mint与windows7双系统启动顺序

安装好linux mint17后&#xff0c;进入mint系统&#xff0c;首先须要一个比較合适的中文输入法。 一、首先迎来的就是安装中文输入法了&#xff0c;之前听说搜狗为ubuntu kinly定制了输入法&#xff0c;所以就想安装搜狗输入法&#xff0c;可是搜索了多个教程并不起作用&#x…

Linux debian安装Typora教程

Typora简介 ​ Typora是一款轻便简洁的Markdown编辑器&#xff0c;它支持即时渲染技术&#xff0c;这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就像写Word文档一样流畅自如&#xff0c;不像其他编辑器有编辑栏和显示栏。 下载安装包 官网下载较慢&am…

优秀的代码原来是这样分层的

作者 | 咖啡拿铁来源 | t.cn/RdrmI7i1、背景说起应用分层&#xff0c;大部分人都会认为这个不是很简单嘛 就controller&#xff0c;service, mapper三层。看起来简单&#xff0c;很多人其实并没有把他们职责划分开&#xff0c;在很多代码中,controller做的逻辑比service还多,se…

面试官 | 什么是 Lambda?该如何使用?

作者 | Mingqi来源 | zhihu.com/question/20125256/answer/3241213081.什么是Lambda?我们知道&#xff0c;对于一个Java变量&#xff0c;我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量&#xff0c;应该怎么做呢&#xff1f;比如&#xff0c;我想把右边那…

最长递增子序列和网易去除最少使从左向右递增又递减问题

&#xff08;1&#xff09;最长递增子序列问题 有两种方法&#xff1a;&#xff08;1&#xff09;动态规划方法&#xff08;2&#xff09;类似二分查找的方法O&#xff08;nlogn&#xff09; 动态规划方法&#xff1a; 以i结尾的序列的最长递增子序列和其[0, i - 1]“前缀”的最…

Linux debian 11上安装 Google Chrome浏览器教程

Google Chrome简介 Google Chrome是世界上最受欢迎的网络浏览器。它是为现代网络构建的快速&#xff0c;安全的浏览器。Chrome不是开放源代码的浏览器&#xff0c;也不包含在官方Debian存储库中。它基于Chromium&#xff0c;这是一个默认Debian Buster存储库中可用的开源浏览器…

面试官 | 线程间是如何通信的?

作者 | wingjay来源 | wingjay.com正常情况下&#xff0c;每个线程独立完成自己的任务就结束了&#xff0c;但某些特殊情况下&#xff0c;我们需要多个线程来共同完成某项任务&#xff0c;这时就涉及到了线程间通信了。本文涉及到的知识点&#xff1a;thread.join()object.wait…

Linux debian解压和压缩.rar文件教程

一、简介 我们上传到Linux服务器上的文件日常是.zip或.tat.gz的文件&#xff0c;我们可以用相应的命令对文件进行解压。有时会遇到.rar文件。本次使用rar软件版本是5.6.0。官方网站为http://www.rarlab.com/ 二、下载和安装rar文件 1.创建文件夹 [rootdoudou ~]# mkdir /us…

windos手工扩展分区

为什么80%的码农都做不了架构师&#xff1f;>>> windows 2003系统下手工扩展分区&#xff08;2008系统直接在磁盘管理里扩展卷即可&#xff09; 1、虚拟机关机&#xff0c;将目标磁盘扩展到所需大小 2、开机&#xff0c;进入命令行模式 3、diskpart 进入diskpart工…

面试突击 | 彻底搞定 JVM 这几道高频面试题

前言 Java 相比 C/C 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收)&#xff0c;它解决了 C/C 最令人头疼的内存管理问题&#xff0c;让程序员专注于程序本身&#xff0c;不用关心内存回收这些恼人的问题&#xff0c;这也是 Java 能大行其道的重要原因之…

Linux五种清理系统垃圾的方式

​ Linux系统使用时间长了&#xff0c;安装了很多软件&#xff0c;更新了不少的软件包&#xff0c;会导致Linux系统反应速度严重下降。下面有5种清理Linux系统下冗余垃圾的命令&#xff0c;总共有sudo apt-get下的clean、autoclean、autoremove、remove、purge。 一、clean命令…

Linux——curl(转)

先介绍curl工具的使用&#xff0c;在其他文章中介绍如何使用curl发送Identity API linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载&#xff0c;所以是综合传输工具&#xff0c;但按传统&#xff0c;习惯称url为下载工具。  一&#xff0c…

阿里面试官给你的一些忠告,这样做肯定错不了!附视频

作者 | 梦游的龙猫来源 | http://dwz.win/2pU近期面试了许多&#xff0c;真的是许多同学&#xff0c;讲道理其实我是比较有耐心的面试官&#xff0c;但是还是忍不住想要吐槽&#xff0c;因此写下这篇文章&#xff0c;一方面希望可以帮助到正在面试&#xff0c;或者在来面试路上…

Linux debian ubuntu安装.deb包教程

deb包是debian&#xff0c;ubuntu等LINUX发行版的软件安装包。 首先deb包已下载保存电脑上&#xff0c;deb包安装方法有两种&#xff1a; 一、可以直接“双击”安装 二、手动安装 使用终端命令行安装 1.使用ctrl alt T组合键打开终端&#xff0c;输入并执行下面命令&…

VMware vCloud® Suite 5.5功能介绍

2013年8月26日在旧金山举办的VMworld大会上&#xff0c;VMware宣布推出VMware vCloud Suite 5.5&#xff0c;它是全面且集成的云基础架构与管理软件套件。新版本让客户能够利用软件定义的数据中心架构&#xff0c;建设并运营基于vSphere的私有云。VMware vCloud Suite 5.5让客户…

Java面试详解(2020版):500+ 面试题和核心知识点详解

与其在网上拼命的找面试题&#xff0c;不如加入我们畅快的阅读。为了写好这些面试题&#xff0c;我先后拜访了一二十家互联网公司&#xff0c;与不同的面试官和面试者进行面对面探讨&#xff0c;深入了解了企业对于面试者的要求和常见的 Java 面试题型。之后我花了大半年的时间…

Linux debian安装Vim和Vim使用教程

Vim 是一个开源免费工具&#xff0c;具有命令行界面和图形用户界面。它对于编辑用 shell、python、Perl、c/c 等编写的配置文件和程序特别有用。最新版本的 Vim 包括一些新功能、错误修复和文档更新。 Vim安装步骤 步骤一、首先使用下面命令更新一下系统&#xff0c;确保您的…

[笔记]Linux NTP命令 (ESX适用)

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://delxu.blog.51cto.com/975660/307513【推荐阅读】这篇最好&#xff1a;http://wiki.ubuntu.org.cn/Quick_HOWTO_:_Ch24_:_The_NTP_Server…

给所有开发人员的 11 条忠告(第 4 条亮了)

1、初学者尽量去有成熟技术团队的公司 其实很多小型的互联网创业公司只有一两个人技术人员&#xff0c;如果里面有大牛能带你成长还好&#xff0c;但大部分估计都是要你自己去摸索学习来解决公司的问题&#xff0c;对个人成长其实是很慢长对过程&#xff0c;相反如果你去大厂&a…