Flask基础(1)

一、Flask框架概述
1.Flask与Django的区别

​ (1)Flask的依赖较小,入门简单,初始较简单,项目加大后依赖加大;Django框架大而全。

​ (2)Flask是一个轻量级的框架。第三方组件非常齐全。Django是一个重量级的框架。

2. 知识内容

(1)路由和视图

(2)视图内容和模板

(3)数据库

(4)迁移,蓝图,测试

3.Flask核心:

(1)Werkzeug工具箱:专门用来处理请求相关的内容,比如:地址

(2)Jinjia2模块引擎:页面渲染处理

(3)额外的拓展包

请添加图片描述

4.Web应用程序作用

(1)客户端:能够联网并向服务端请求;

(2)服务端:对客户端的请求做相应;

(3)Web框架:已经封装好的代码,开发者根据业务需求,在指定的位置加上自己的业务逻辑代码,降低开发难度,大大加大开发效率;

二、虚拟环境
1.虚拟环境是什么:

​ 一个特殊的文件夹,里面存放着程序,运行所需要的各种版本的python解释器,和各种框架的版本。

2.虚拟环境的相关操作

请添加图片描述

3. 安装Flask虚拟环境

pip install flask==0.10.1

4. 查看当前虚拟环境中有那些 拓展

pip freeze

​ (1)导出虚拟环境中的所有的拓展

pip freeze > requirements.txt

​ (2)根据requirment.txt安装虚拟环境

pip install -r requirements.txt

5.在pycharm中使用虚拟环境
三、Hello, world!
1. 示例程序
from flask import Flask
# 1. 从flask中导入Flask类
# 2. 创建flask对象 app = Flask(参数...)
# 参数: (1)__name__: 如果当前文件启动,那么值是__main__,如果从其它模块调用,则值是模块的名字
# (2)static_url_path: 表示静态文件的访问地址
# (3)static_folder: 用来存储静态资源的,默认名字是static
# (4)template_folder: 模本文件夹,默认值为template
app = Flask(__name__)

# 使用app,通过路由绑定一个视图函数。
@app.route("/")
# 视图函数:一定要有返回值
def helloWorld():
    return "Hello world, Flask"

# 是否直接使用当前模块运行程序
if __name__ == '__main__':
    # 运行app程序
    app.run()

2.app的操作

(1)查看路由地址

`app.url_map`

返回路由、请求方式(GET/POST)、OPTONS\HEAD及对应的视图函数
3. 相关配置参数

(1) app.run()

参数1:host,默认值为127.0.0.1(可改为公网IP地址)

参数2:port(端口),默认为5000

参数3:debug,默认为False;

	- 如果设置为True,如果在运行过程中修改代码,不需要重新	启动程序,只需修改后Ctrl+S保存即可。

	- 运行时,程序不会编译代码,出错后可返回错误信息
4. 动态参数类型

(1)在访问路由的时候指定参数

@app.route("/<类型:变量名>")
# 常见的参数类型
"""
整数:int
小数:float
字符串:path(不写类型,默认为path)
"""

(2)自定义转换器

**·**如果系统提供的int,float等参数类型满足不了需求时,需要自定义

**·**之所以,int,float,path可以接受不同的数据类型,是因为系统已经提供对应的转换器

**·**方法:--1. 定义类,继承自BaseConverter

			--2. 重写init方法,根据路由重写

			--3. 初始化父类成员变量,还有子类自己的规则

			--4. 将转换器类添加到系统默认的转换器列表中
cfrom flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)

"""
--1. 定义类,继承自BaseConverter
--2. 重写init方法
--3. 初始化父类成员变量,还有子类自己的规则
--4. 将转换器类添加到系统默认的转换器列表中
"""


# 1. 定义类,继承自BaseConverter
class MyRegexConverter(BaseConverter):
    # --2. 重写init方法
    def __init__(self, Map, regex):
        # 3. 初始化父类成员变量,还有子类自己的规则
        super(MyRegexConverter, self).__init__(Map)
        self.regex = regex


# --4. 将转换器类添加到系统默认的转换器列表中
app.url_map.converters["data"] = MyRegexConverter


# 使用data('规则'),实际上传递了两个参数:1. app.url_map, 2. 括号中的规则
@app.route('/<data("\d{4}"):number>')
def test(number):
    return "The number is %s" % number


if __name__ == '__main__':
    app.run(debug=True)
lass MyRegexConverter(BaseConverter):
    
四、设置请求
1.给路由增加访问方式

(1)格式:

@app.route('路径', methods=["method1", "method2", ...])

(2)常见的请求方式

· GET, POST, DELETE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值