• 【Flask从入门到精通:第一课:flask的基本介绍、flask快速搭建项目并运行】


    1. 从0开始入手到上手一个新的框架,应该怎么展开?
    2. flask这种轻量级的框架与django这种的重量级框架的区别?
    3. 针对web开发过程中,常见的数据库ORM的操作。
    4. 跟着学习flask的过程中,自己去学习和了解一个新的框架(Sanic,FastAPI)

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

    新的常用框架:FastAPI,sanic,django4.0(目前的版本属于从同步到异步改造过程中),flask2.0(目前的版本属于从同步到异步改造过程中)

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

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

    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

    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的序列化器)

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

    准备

    # anaconda创建虚拟环境
    conda create -n flask python=3.9
    # 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。
    # conda activate  <虚拟环境名称>
    conda activate flask 
    # 退出当前虚拟环境
    conda deactivate
    

    在这里插入图片描述

    安装flask,则以下命令:

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

    在这里插入图片描述

    创建flask项目

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

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

    在这里插入图片描述

    创建一个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 "

    hello flask

    "
    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 "

    hello flask

    "
    # 指定服务器IP和端口 if __name__ == '__main__': # 运行flask app.run(host="0.0.0.0", port=5000, debug=True)
  • 相关阅读:
    Spring Tool Suite(STS)初始化配置记录
    周赛368 合法分组的最少组数(灵神笔记)
    重学java 58.红黑树相关集合
    【vue实战项目】通用管理系统:作业列表
    低代码开发在人工智能时代的多重前景
    PageHelper分页插件隐藏的坑
    《JAVA筑基100例》导读
    MySQL 锁
    gma 1.x 气候气象指数计算源代码(分享)
    网速快慢与网线材质的选择关系
  • 原文地址:https://blog.csdn.net/weixin_50556117/article/details/140312218