• flask第一个应用



    安装

    python环境安装的过程就不重复赘述了,flask安装使用命令pip install Flask即可,使用命令pip show Flask查看flask版本信息
    在这里插入图片描述


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、编程第一步

    在项目目录下新建一个app.py,写入内容如下

    from flask import Flask
    
    # 创建app实例
    app = Flask(__name__)
    
    # 定义路由
    @app.route('/')
    # 定义视图函数
    def hello_world():
        # 返回响应
        return 'Hello, World!'
    
    # 启动服务
    if __name__ == '__main__':
        # 运行app实例
        app.run(debug=True)
    

    在我们的项目目录下执行命令python app.py可以看到下图所示,程序默认是在端口5000上运行的,如果需要使用其他端口可以把最后一行改为app.run('0.0.0.0', 8000, debug=True)
    在这里插入图片描述
    在这里插入图片描述

    二、引入配置

    上面我们跑起来的项目除了端口其他都是默认的,也没有类似数据库,session等配置信息,我们接下来在这个app.py里面加一些基本配置来适配我们的应用,配置参数都写在代码里面了

    from flask import Flask, Blueprint
    from flask import session
    from flask_sqlalchemy import SQLAlchemy
    from flask_redis import FlaskRedis
    
    # 创建app实例
    def create_app(config_name):
        # 创建app实例
        app = Flask(__name__)
        # 加载配置
        app.config.from_object(config_name)
    
        app.secret_key = app.config['SECRET_KEY']
        # 设置缓存类型
        app.config['CACHE_TYPE'] ='redis'
        # 设置session类型
        app.config['SESSION_TYPE'] = 'redis'
        # 获取redis实例
        redis_client = FlaskRedis(app)
    
        @app.route('/about')
        def about():
            # 设置session
            session['name'] = 'admin'
            redis_client.set('name', 'admin')
            # 获取session
            return f'about page session:{session.get("name")}, redis:{redis_client.get("name").decode('utf-8')}'
    
        # 定义路由
        @app.route('/home')
        def home():
            return "Hello, World!"
        
        # 404错误处理
        @app.errorhandler(404)
        def page_not_found(e):
            return 'This page does not exist', 404
        
        # 500错误处理
        @app.errorhandler(500)
        def internal_server_error(e):
            return 'Internal Server Error', 500
    
        # 返回app实例
        return app
    
    class Config:
        # Debug模式
        DEBUG = True
        # SECRET_KEY 密钥
        SECRET_KEY = '631ada96b1246c6ca3a92ee8e85f5393734509313cdbc59f42527b433c5fe61d'
        # 数据库配置
        SQLALCHEMY_DATABASE_URI ='mysql://root:123456@localhost:3306/flask_demo'
        # 数据库配置, 禁用追踪修改
        SQLALCHEMY_TRACK_MODIFICATIONS = False
        # Redis配置
        # REDIS_URL ='redis://:123456@localhost:6379/0'
        REDIS_URL ='redis://localhost:6380/0'
    
    app = create_app(Config())
    
    if __name__ == '__main__':
        app.run('0.0.0.0', port=8000, debug=True)
    

    在这部分代码里面我们配置了一个本地的mysql数据库,引入了蓝图和session SECRET_KEY密钥,定义了404和500的错误处理,这样我们基本可以实现一个小型项目的需求支持,安装mysql/redis命令可以用下面这些

    # 安装 Flask-SQLAlchemy
    pip install Flask-SQLAlchemy
    
    # 安装MySQL
    pip install mysqlclient
    # 如果选择使用 PyMySQL,需要在应用程序的开始部分添加以下代码,以确保 SQLAlchemy 使用 PyMySQL 作为驱动
    import pymysql
    pymysql.install_as_MySQLdb()
    
    # 安装redis
    pip install Flask-Redis
    
    # 安装PyMySQL(适合与 Flask-SQLAlchemy 一起使用)
    pip install PyMySQL
    

    然后执行python app.py访问http://127.0.0.1:8000/about
    在这里插入图片描述

    三、代码解析

    from flask import Flask
    

    从 Flask 模块中导入 Flask 类,以便创建 Flask 应用程序的实例

    app = Flask(__name__)
    

    创建一个 Flask 应用实例,其中 __name__ 是一个特殊的 Python 变量。当模块直接运行时,其值为 ‘__main__’;当模块被其他模块导入时,其值为模块的名称。将 __name__ 传递给 Flask 构造函数,使得 Flask 应用能够正确找到和加载配置文件

    @app.route('/')
    def hello_world():
    	return 'Hello, World!'
    

    路由/函数/返回值定义

    if __name__ == '__main__':
    

    条件判断,检查当前模块是否被直接运行,而非作为其他模块导入

    app.run(debug=True)
    

    调用 Flask 应用实例的 run 方法,启动 Flask 内置的开发服务器。debug=True 参数启用调试模式,使得应用在代码更改时自动重新加载,并在发生错误时提供调试器


    上面的我们一直只有一个app.py文件,小型项目可以应付,但是遇到中大型项目就没办法做一个模块区分了,后续将更新如何使用flask处理中大型项目

  • 相关阅读:
    Java :职责链模式
    解决vue element - ui 弹窗打开表单自动校验问题
    python中的super是什么?
    我的C#基础
    低代码助力中小企业数字化
    Oracle数据库基础
    “金九银十”这几天刚整理出炉的两份最全“Java 面试宝典+Java 核心知识集”
    C/C++字符函数和字符串函数详解————长度受限制的字符串函数
    EasyUI后台管理系统
    算法学习笔记-LeetCode215-数组中的第K个最大元素
  • 原文地址:https://blog.csdn.net/weixin_42695345/article/details/143303589