从零开始学Python Flask Web(四)--Flask Request请求

前言:

首先要明确一件事,Request这是个对象,不管使用PHP还是python还是什么java语言,虽然request这个对象可能叫的名字不一样,(在其他语言中可能叫什么HttpRequest),但是原理都是差不多。我们客户端发送请求给服务器,发送的就是这个Request对象。我们不能简单的以为我们在地址栏打了一行:www.xxxx.com 就以为请求就这点东西,其实Request对象里面包含了你要发送给服务器的很多东西。这节内容和之前的基础知识中的Http相呼应。

在Flask中,Request对象就叫做request,可以直接引用:from flask import request


上下文(context):

一直看到这个东西,却不知道这是个什么玩意,难以理解。简单说一下什么是请求上下文:我们客户端发送了请求给服务器,那么这个request对象就发送过去了。服务器那边就接收到了这个request,那么就可以使用一系列方法读取这个request对象中的内容(比如使用request.method 显示它用GET还是POST方式提交的,使用request.path  查看它请求的路径是什么)。而我们如果浏览器没有发送请求,那么在服务器端,你去使用request.method这些方法就会报错,因为这些方法需要客户端发送过来请求才能执行,也就是说,某些方法的执行需要一系列操作作为基础,需要前因后果这种关系(说的比较抽象),而这种前因后果就可以通俗理解为上下文。


实例:

突然发现,就这么三言两语,把Request的核心就描述完了,,,只好用一个小栗子来巩固一下了,正好把之前的内容也运行一遍。

我们现在pycharm中创建一个Flask项目,然后修改app.py,没做什么大的改动,就是把路由路径改了一下,然后我们用浏览器请求路由指定的地址,看能不能把从request获取的信息打印出来。如图:我们在浏览器中输入本机的5000端口的/req/路径(path),然后在服务器获取到了我们的request对象,返回request对象中的method,显示在网页上。

如果我们想传递参数,那么简单粗暴的我们直接在地址栏附加上我们要传递的参数,发送请求给服务器,然后服务器把参数打印出来。如图:


编码问题:

我们在浏览器地址栏输入的东西是有格式规范的,就比如上面的path后面跟了个"?name=lynn"。就比如我们如果在地址栏输入的是"?name=lynn&pete"那我们看一下,浏览器识别打印出来的是什么:

发现我们发送的是"?name=lynn&pete",打印出来的却是只有lynn。因为&这个字符是不符合规范的,人家识别不了。那么我们怎么输入的,看图:

我们用%26代替了&,发现运行成功了。这时候说明一下,地址栏的编码和我们常用的有些不一样,比如空格它是用%20来代替的。这就是为什么我们经常看到一些网址后面跟了一堆%20 %26之类的东西。具体都是怎么编码的大家可以自己查一下。在python中呢也给我们提供了编码转换器urilib,好像叫这个名字。


好的,request就说到这里。希望大家明白它的内容。

猜你喜欢

转载自blog.csdn.net/qq_42666483/article/details/82492675