python Web 开发 Flask 介绍_python flask web开发


打开终端,跳转到`hello.py`文件所在的文件夹,进入python命令行模式,启动服务



python hello.py


如果一起正常的话会有类似下面的反馈



  • Serving Flask app “hello” (lazy loading)


> 
> 因为是通过`app.run()`启动的服务,所以会有个错误提示,提醒不能将此Web应用部署在生产环境中,可以暂时忽略
> 
> 
> 


此时,打开浏览器,输入 127.0.0.1:5000/ 或者 localhost:5000/, 就可以看到 Hello World!欢迎字样。


#### 路由


路由是Web开发中一个很重要的概念,用来将不同的请求,映射到响应的处理方法上,这个方法被称为**视图函数**。比如刚才的`Hello`应用,将根请求,映射到`index`处理方法上,下面简单了解下Flask对路由的支持 Flask通过修饰器(和Java的注解类似)来建立路由映射关系的,已经看到修饰器是`app.rotue()`


###### 简单路由


如 访问 `/hello`



@app.route(‘/hello’)


###### 动态路由


如访问 `/user/bob` 或者 `/user/lily` 都会映射到同一视图函数上



@app.route(‘/user/’)


动态域名中动态的部分可以作为视图函数的参数,也支持多个动态参数,如访问 `/user/bob/23`



@app.route(‘/user//’)


还可以指定动态部分的数据类型,如



@app.route(‘/post/int:post_id’)


支持的数据类型




| 类型 | 说明 |
| --- | --- |
| string | (默认值) 任何不包含斜杠的文本 |
| int | 正整数 |
| float | 正浮点数 |
| path | 类似 string ,但可以包含斜杠 |
| uuid | 接受 UUID 字符串 |


###### 指定HTTP 方法


HTTP协议,支持多种HTTP 方法,例如`HEAD`、`OPTIONS`,以及常用的`GET`、`POST`等,Flask自动处理了`HEAD`和`OPTIONS`,路由默认接受的方法是GET,如果要匹配其他请求方法,可以在路由方法的`methods`参数来指定



@app.route(‘/login’, methods=[‘GET’, ‘POST’])


###### 复合路由


也可以将多个路由规则,用于一个视图函数, 如访问`/job/` 和访问 `/work/`效果是一样的



@app.route(‘/job/’)


再复杂一点的例子



@app.route(‘/users/’, defaults={‘page’: 1})


上面的代码表示,当访问`/user/`或者 `/user/page/` 时,都会有`show_users`视图函数来处理, 而且还为`/user/`提供了默认值,即访问`/user/`相当于访问 `/user/page/1`


#### 请求和响应


Web应用,最重要的事情就是处理接收到的请求,并返回响应。Flask框架也一样,它提供了请求对象`request`和响应对象`response`,可以方便的在视图函数中使用。


###### 请求


Flask将客户端发送的HTTP请求封装成了`request`请求对象,并且使用上下文(context)临时将`request`变为全局可访问的,于是在视图还是中,就可以直接使用了。



> 
> **注意**: `request`并非真正的全局变量!试想,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的`request`对象必然不同。Falsk使用上下文让特定的变量在一个线程中全局可访问,与此同时却不会干扰其他线程。
> 
> 
> 


Flask有两种上下文,分别为程序上下文和请求上下文,各自对应的全局变量如下表:




| 变量名 | 上下文类型 | 备注 |
| --- | --- | --- |
| current\_app | 程序上下文 | 表示当前运行的程序实例 |
| g | 程序上下文 | 处理请求时用作临时存储对象,每次请求都会重新设值 |
| request | 请求上下文 | 客户端发来的request请求对象 |
| session | 请求上下文 | 请求携带的会话信息 |


使用`request`对象前,需要先引入



from flash import request


`request`对象提供了丰富的属性和方法,这里举个例子:通过使用 `method` 属性可以操作当前请求方法,通过使用 `form` 属性处理表单数据(在 `POST` 或者 `PUT` 请求 中传输的数据)。以下是使用上述两个属性的例子:



@app.route(‘/login’, methods=[‘POST’, ‘GET’])



> 
> **注意**:当 form 属性中不存在这个键时会发生什么?会引发一个 KeyError 。如果不处理这个错误 ,就会显示一个 HTTP 400 Bad Request 错误页面。
> 
> 
> 


如果要操作 URL (如 ?key=value )中提交的参数可以使用 args 属性,如 : `searchword = request.args.get('key', '')`


###### 请求钩子


有时在处理请求之前或之后执行代码会很有用。例如,在请求开始时,可能需要创建数据库连接或者认证发起请求的用户。为了避免在每个视图函数中都使用重复的代码,Flask提供了注册通用函数的功能,注册的函数可在请求被分发到视图函数之前或之后调用。请求钩子使用修饰器实现。Flask支持以下4种钩子:


1. `before_first_request`:注册一个函数,在处理第一个请求之前运行。
2. `before_request`:注册一个函数,在每次请求之前运行。
3. `after_request`:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
4. `teardown_request`:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。

文末有福利领取哦~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![img](https://img-blog.csdnimg.cn/c67c0f87cf9343879a1278dfb067f802.png)

**二、Python必备开发工具**

![img](https://img-blog.csdnimg.cn/757ca3f717df4825b7d90a11cad93bc7.png)  
**三、Python视频合集**

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
![img](https://img-blog.csdnimg.cn/31066dd7f1d245159f21623d9efafa68.png)

 **四、实战案例**

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。**(文末领读者福利)**  
![img](https://img-blog.csdnimg.cn/e78afb3dcb8e4da3bae5b6ffb9c07ec7.png)

**五、Python练习题**

检查学习结果。  
![img](https://img-blog.csdnimg.cn/280da06969e54cf180f4904270636b8e.png)

**六、面试资料**

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。  
![img](https://img-blog.csdnimg.cn/a9d7c35e6919437a988883d84dcc5e58.png)

![img](https://img-blog.csdnimg.cn/5db8141418d544d3a8e9da4805b1a3f9.png)

因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传



加入社区:https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0

你可能感兴趣的:(python,前端,flask)