flask 框架介绍 基础使用 加载配置 终端运行

一、Flask 概述

1.各种web框架了解

旧的常用框架:django(3.0以后支持异步),flask(2.0以后支持异步)和 tornado(异步),twisted(异步)

新的常用框架:FastAPI(自带swagger,不需要插件,如flask_restx),sanic,django4.0(目前的版本属于从同步到异步改造过程中),flask2.0(目前的版本属于从同步到异步改造过程中)

Sanic:https://sanicframework.org/zh/guide/

FastAPI:https://fastapi.tiangolo.com/zh/tutorial/first-steps/

2.flask 概述

Flask诞生于2010年,是Armin ronacher(阿明·罗纳彻)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。

flask的 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。Itsdangrous(token加密模块),Click(终端命令管理工具),flask内核本身,这5个核心模块组成 Flask 框架。

官网: https://flask.palletsprojects.com/en/2.0.x/

官方文档: https://dormousehole.readthedocs.io/en/latest/index.html

3.第三方插件了解

可以通过 https://pypi.org/search/?c=Framework+%3A%3A+Flask 查看更多flask官方推荐的扩展

Flask常用第三方扩展包:

  • Flask-SQLAlchemy:操作数据库,ORM;

  • Flask-script:终端脚本工具,脚手架; ( 淘汰,官方内置脚手架:Click)

  • Flask-migrate:管理迁移数据库;

  • Flask-Session:Session存储方式指定;

  • Flask-Mail:邮件;

  • Flask-Login:认证用户状态;(django内置Auth模块,用于实现用户登录退出,)

  • Flask-OpenID:认证, OAuth;(三方授权,)

  • Flask-RESTful:开发REST API的工具;

  • Flask JSON-RPC: 开发json-rpc远程服务[过程]调用

  • Flask-Bable:提供国际化和本地化支持,翻译;

  • Flask-Moment:本地化日期和时间

  • Flask-Admin:简单而可扩展的管理接口的框架

  • Flask-Bootstrap:集成前端Twitter Bootstrap框架(前后端分离,除了admin站点,基本不用这玩意)

  • Flask-WTF:表单生成模块;(前后端分离,除了admin站点,基本不用这玩意)

  • Flask-Marshmallow:序列化(类似djangorestframework的序列化器)

二.创建flask基础项目

与django不同,flask不会提供任何的自动操作,所以需要手动创建项目目录,需要手动创建启动项目的管理文件

例如,创建项目目录 flaskdemo,在目录中创建manage.py.在pycharm中打开项目并指定上面创建的虚拟环境

1.安装flask,则以下命令:

pip install flask -i https://pypi.douban.com/simple

2.创建一个flask框架的启动入口文件。名字可以是app.py/run.py/main.py/index.py/manage.py/start.py

manage.py,代码:

# 1. 导入flask核心类
from flask import Flask
​
# 2. 初始化web应用程序的实例对象
app = Flask(__name__)
​
​
# 4. 可以通过实例对象app提供的route路由装饰器,绑定视图与uri地址的关系
@app.route("/")
def index():
    # 5. 默认flask支持函数式视图,视图的函数名不能重复,否则报错!!!
    # 视图的返回值将被flask包装成响应对象的HTML文档内容,返回给客户端。
    return "<h1>hello flask</h1>"
​
​
if __name__ == '__main__':
    # 3. 运行flask提供的测试web服务器程序
    app.run(host="0.0.0.0", port=5000, debug=True)

代码分析:

# 导入Flask类
from flask import Flask
​
"""
Flask类的实例化参数:
import_name      Flask程序所在的包(模块),传 __name__ 就可以
                           其可以决定 Flask 在访问静态文件时查找的路径
static_path          静态文件存储访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path    静态文件的url访问路径,可以不传,默认为:/ + static_folder
static_folder        静态文件存储的文件夹,可以不传,默认为 static
template_folder  模板文件存储的文件夹,可以不传,默认为 templates
"""
app = Flask(__name__)
​
# 编写路由视图
# flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中。
# flask的视图函数,flask中默认允许通过return返回html格式数据给客户端。
@app.route('/')
def index():
    # 返回值如果是字符串,被自动作为参数传递给response对象进行实例化返回客户端
    return "<h1>hello flask</h1>"# 指定服务器IP和端口
if __name__ == '__main__':
    # 运行flask
    app.run(host="0.0.0.0", port=5000, debug=True) 

三、flask加载项目配置

# 1. 导入flask核心类
from flask import Flask
​
# 2. 初始化web应用程序的实例对象
app = Flask(__name__)
​
"""第一种:flask项目加载站点配置的方式"""
# # app.config["配置项"] = 配置项值
# app.config["DEBUG"] = False
# # app.config是整个flask项目默认的配置属性,里面包含了所有的可用配置项,配置项的属性名都是大写字母或大小字母+下划线组成
config = {"DEBUG": True}
# # app.config.update(config)
"""第二种:通过文件加载,如下是通过配置类的文件加载,更多文件格式参考:https://www.cnblogs.com/wupeiqi/articles/7552008.html"""
app.config.from_object("settings.DevelopmentConfig")  # 路径.类名
# 4. 可以通过实例对象app提供的route路由装饰器,绑定视图与uri地址的关系
@app.route("/")
def index():
    # 5. 默认flask支持函数式视图,视图的函数名不能重复,否则报错!!!
    # 视图的返回值将被flask包装成响应对象的HTML文档内容,返回给客户端。
    return "<h1>hello flask</h1>"
​
​
if __name__ == '__main__':
    # 3. 运行flask提供的测试web服务器程序
    app.run(host="0.0.0.0", port=5000)

settings.py:

class BaseConfig(object):
    DEBUG = True  # 所有配置名必须大写
    SECRET_KEY = "asudflkjdfadjfakdf"class ProductionConfig(BaseConfig):
    DEBUG = False
    DATABASE_URL = 'mysql://user@pro/foo'class DevelopmentConfig(BaseConfig):
    DATABASE_URL = 'mysql://user@dev/foo'
​
​
class TestingConfig(BaseConfig):
    DATABASE_URL = 'mysql://user@test/foo'

四、终端运行Flask项目

#  如果要基于开发环境在终端启动项目,设置环境变量如下:
export FLASK_DEBUG=True  # linux bash
# set FLASK_DEBUG=True # windows cmd  参考官方文档
# 如果要基于生产环境在终端启动项目,设置环境变量如下:
# export FLASK_DEBUG=Flase
# 找到创建flask应用的模块路径,例如:manage.py
# 则ubuntu等Linux下的终端:
export FLASK_APP=manage.py  # 这是临时设置,如果有永久设置,可以通过/etc/profile保存
# set FLASK_APP=manage.py # windows  参考官方文档
# 2. 在当前虚拟环境中,如果安装了flask模块,则可以使用全局命令flask run,即可运行flask项目
flask run # 采用默认的127.0.0.1 和 5000端口运行项目 
flask run --host=0.0.0.0 --port=8088 # 可以改绑定域名IP和端口

 
posted @ 2023-04-13 13:34  www.pu  Views(200)  Comments(0Edit  收藏  举报