Flask框架

本文详细介绍了Flask框架,从框架的介绍和环境搭建开始,逐步讲解了第一次使用Flask的经验,配置方法,重点探讨了工厂模式和APP封装,解析了Flask路由的定义及路由映射的查看,最后阐述了如何启动服务器。适合Python初学者和希望深入理解Flask的开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Flask框架的介绍与环境搭建
Flask是一个轻量级的web框架, Flask就提供了一个简单的内核.
- 轻量级:
    Flask提供简单的内核, 其他功能需要扩展包来实现.
	Flask在大型项目中使用的扩展包多了, 也会变得笨重.

# 安装Flask框架
pip install Flask==1.0.2

# 注意:
安装Flask框架, 会自动安装jinja2模板引擎与Werkzeug路由模块, 他俩使我们Flask框架的核心成员.
# 虚拟环境
pip install virtualenvwrapper

# 命令
1.创建虚拟环境: mkvirtualenv envname  # envname是虚拟环境名, 需要自定义
2.激活虚拟环境: workon envname
3.安装包和查看安装包:
    pip install pkname
    pip list
    pip show django
4.查看所有的虚拟环境: lsvirtualenv
5.退出虚拟环境: deactivate
6.删除虚拟环境: rmvirtualenv

# 解放程序员双手的命令
pip freeze > requirements.txt
pip install -r requirements.txt路径

2.第一次邂逅Flask
# 小李子
# 步骤:
# 1.导入Flask类
from flask import Flask

# 2.实例化Flask对象
app = Flask(__name__)


# 3.定义路由与视图
@app.route('/index')
def index():
    return 'Hello xiaohehe'


# 4.启动服务了
if __name__ == '__main__':
    app.run()
# 知识点抽取:
1.app = Flask(__name__)
说明:
(1).__name__: 在本文件运行时__name__的值为__main__, 如果一个文件作为包被导入, 包内的__name__的值为包的名字.(理解最好, 不理解没关系)
(2).Flask()实例化对象, 传递的__name__用于定位程序的位置
(3).注意:传递其他任意的非标准模块名均可, 但不推荐这样做
  
2.定义路由
flask采用装饰器形式定义路由, 语法形式如下:
@app.route('path', methods=['GET', 'POST'], endpoint='端点')
path: 路由地址
methods: 视图函数允许的请求方法, 如果不传递该参数, 默认视图只接受get请求
endpoint: 端点, 相当于别名
    
3.服务的启动:
app.run(host="127.0.0.1", port=5001, debug=True)
host: 启动的主机名
port: 启动的端口
debug: True开启调试模式, False不开启调试模式

3.Flask配置
1.从配置对象中加载配置
2.从文件中加载配置
3.从环境变量中加载配置
1.从配置对象中加载
(1).创建一个settings文件, 在文件中创建配置类
class Config(object):
    REDIS_PORT = 6379
(2).从对象中加载配置
from settings import Config
app.config.from_object(Config)
(3).获取配置
app.config.get('配置名')
app.config['配置名']
注意:
    # get方式如果取不到配置, 则返回None
    # 字典取值方式, 如果配置不存在, 则抛出异常, 异常名称为KeyError

2.从文件加载配置
(1).新建一个配置文件: settings.拓展名  (拓展名: py, cnf, config, ini)
(2).编写配置项, 采用"变量名=值"的关系, 注意, 变量用全大写的
(3).从文件加载配置:
    app.config.from_pyfile('配置文件路径')
(4).获取配置信息:
app.config.get('配置名')
app.config['配置名']

# 从环境变量中加载
1.创建一个配置文件, 一般这个配置文件不再我们的项目目录里
2.copy文件路径
3.在pycharm中设置环境变量
name: settings
value: 路径
4.代码中加载环境变量:
app.config.from_envvar('settings', silent=True)  
# 注意: 
(1).括号里面写的settings需要与环境变量的name一致
(2).silent=True代表加载不到, 不能报错

# 对比一下:
1.从对象加载配置: 配置方式灵活, 可复用性强, 但不安全
2.从文件加载配置: 复用性不好, 也不安全, 但是官方推荐用法
3.从环境变量加载: 相对安全, 利于配置敏感信息, 推荐使用
# 注意: 干活时候, 如果老板没有明确要求, 那你就采用从对象加载配置和从环境变量加载配置结合

4.工厂模式与APP封装
# 设计模式
设计模式是有GoF(Gang of four)首先提出, 设计模式是用来解决特定问题的解决方案, 它本身是一种发现, 而不是一种发明.
设计模式分类:
    - 创建型设计模式
    - 机构型设计模式
    - 行为型设计模式
归结出来: 23个设计模式(自己去科普一下)
# 你又听说过哪些设计模式
单例模式: 保证一个类只能有一个实例
MVC模式: M->model, V->view, c->controller
MTV模式: M->model, view->视图(Controller), T->Teleplate(view)
(MVC设计模式是为了解耦而存在)
门面模式: socket在TCP/IP网络模型中的设计模式


# 工厂模式
工厂模式, 在于提供一个"工厂", 这个工厂负责创建其他类型的对象, 客户端使用某些参数调用工厂类内部的方法, 可以根据参数的不同, 给客户端返回不同的对象
# 工厂模式实例代码
class Dog(object):
    def do_say(self):
        print('wang wang wang')


class Cat(object):
    def do_say(self):
        print('miao miao miao')

# 工厂类
class Factory(object):
    def make_sound(self, ani):
        return eval(ani)().do_say()

if __name__ == '__main__':
    f = Factory()
    ani = input('请输入要实例化的类名: ')
    f.make_sound(ani)
使用工厂模式封装APP, 就是为了可以给工厂函数传递不同的参数, 根据不同的参数返回不同的APP对象. 比如, 有一个配置文件, 内部有两个配置类, 一个用开发, 一个用户生产, 在开发阶段, 我们就给工厂函数传递一个开发的配置类, 这样工厂函数就能返回一个加载了开发配置的APP对象, 如果要上线了, 那就给工厂函数传递一个生成的配置类, 工厂函数就会返回一个加载了成产配置的APP对象
# APP封装
from flask import Flask
from settings import DevConfig, ProConfig

# 工厂函数
def create_flask_app(config):
    app = Flask(__name__)
    app.config.from_object(config)
    return app

app = create_flask_app(ProConfig)

@app.route('/')
def index():
    mysql_host = app.config.get('MYSQL_HOST')
    print(mysql_host)
    return 'fac'

if __name__ == '__main__':
    app.run()

5.Flask路由的定义
# 路由定义
Flask的路由为装饰器实现的, 语法及参数如下:
@app.route(url, methods=[....], endpoint="...")
def index():
    pass

# 参数:
- URL: 路由路径
- method: 视图允许的请求方法, 如不指定method, 则默认只允许GET请求访问视图
- endpoint: 端点, 可以视为路由别名, 如果endpoint不指定, 则默认endpoint的值为视图函数名

6.路由映射的查看
# 查看Flask项目的路由映射
1.app.url_map
2.命令行方式: flask routes
注意: 需要设置服务器启动方式后, 进行查看

7.服务器启动方式
在Flask1.0版本之后, flask调整为开发服务器启动方式, 将app.run()调整为flask  run来启动Flask服务.

# 在终端启动的步骤:
(1).指定启动实例: export FLASK_APP=脚本名
(2).指定启动的模式: export FLASK_ENV='development'  # 'production': development为开发模式, production为生产模式
(3).启动命令详解: flask run -h ipaddr -p port
    比如: 要启动在IP为125.13.133.468899端口上
        flask run -h '125.13.133.46' -p 8899
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熏悟坑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值