Flask框架web开发 第一章 Flask入门(在windows系统下)

Flask框架web开发(第一章)

使用web框架的优点:避免重复造轮子。

一. Flask入门

1.虚拟环境使用virtualenv创建,检查是否安装:
virtualenv --version
2.安装虚拟环境

pip install virtualenv
pip install virtualenvwrapper

3.创建虚拟环境
安装成功后进入到 D:\Software\Path\Python\Scripts目录下,输入命令:virtualenv flask_py(文件夹名字)
创建虚拟Python环境的文件夹
在这里插入图片描述
4.激活虚拟环境
输入flask_py\Scripts\activate
在这里插入图片描述
5.在上面继续输入pip install flask(可以指定版本),如果不报错,就代表安装成功了
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019022620175827.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDEwODc0NQ==,size_16,color_FFFFFF,t_70

6.requirements文件
  • Python项目中必须包含一个requirements.txt文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行版本操作。
    pip freeze > requirements.txt
  • 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:
    pip install -r requirements.txt
7.第一个Flask程序
# -*- coding:utf-8 -*-

# 1.导入Flask应用程序实例
from flask import Flask

# 2.创建Flask应用程序实例
# 需要传入__name__,作用是为了确定资源所在的路径
app = Flask(__name__)

# 3.定义路由及视图函数
# Flask中定义路由是通过装饰器实现的
# 路由默认只支持GET,如果需要增加,需要自行指定
@app.route('/')
def index():
    return "Hello World!"

# 4.启动程序
if __name__ == '__main__':
    # 执行app.run,就会将Flask程序运行在一个简易的服务器上(Flask提供的,用于测试的)
    app.run()
  • Flask程序运行过程
    1.当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。
    2.此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例。WSGI是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP,响应等等的这些底层的代码和操作,使开发者可以高效的编写Web应用。
    3.程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。
    4.根据每个URL请求,找到具体的视图函数。
    在Flask程序中,路由的实现一般是通过程序实例的route装饰器实现。route装饰器内部会调用add_url_route()方法实现路由注册。
    5.Flask调用视图函数后,可以返回两种内容:
    (1) 字符串内容:将视图函数的返回值作为相应的内容,返回给客户端(浏览器)
    (2) HTML模板内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后由Flask返回响应数据给浏览器,最后浏览器处理返回的结果显示给客户端。
8.路由请求方式限定

路由默认只支持GET,如果需要增加,需要自行指定.
安装Postman

9.路由参数处理

有时,我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的订单信息。
路由传递的参数默认当做string处理

# 使用同一个视图函数,来显示不同用户的订单信息
# <>定义路由的参数,<>内需要起个名字
@app.route('/order/<int:order_id>')
def get_order_id(order_id):
    # 参数类型,默认是字符串,unicode
    print(type(order_id))

    # 有的时候需要对路由做访问优化,订单id应该是int类型
    # 需要在视图函数的()内填入参数名,那么后面的代码才能去使用
    return 'order_id %s' % order_id

@app.route('/order/<int:order_id>')指定int,会调用系统的路由转换器进行匹配和转换。

  • 大致原理是将参数强转为int,如果成功,则可以进行路由匹配
  • 如果参数无法转化成功,就无法匹配该路由
    整数时:
    在这里插入图片描述
    非整数时:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40108745/article/details/87947292