• Flask笔记一之项目搭建、配置项导入


    本文首发于公众号:Hunter后端

    原文链接:Flask笔记一之项目搭建、配置项导入

    这一篇开始介绍 Flask 系列笔记,这个系列笔记将和之前的 Django 笔记一样会从 Flask 的官方文档中提取一系列的知识点,整理成系列笔记。

    这是 Flask 系列笔记的第一篇,本篇笔记介绍的是 Flask 项目的搭建以及配置项的导入,我们用到的 Python 的版本还是 3.8,用到的 Flask 的版本是 2.3.2。

    pip3 install flask==2.3.2
    
    • 1

    接下来我们这里用 Pycharm 创建一个项目,我们命名为 flask_blog,在其下文件夹为 app,其下再创建一个 __init__.py 文件,当前的文件结构如下:

    flask_blog
        └── app
            └── __init__.py
    
    • 1
    • 2
    • 3

    以下是我们本篇笔记目录:

    1. 运行 Flask
    2. Flask 获取配置
    3. 区分开发环境和生产环境变量

    1、运行 Flask

    __init__.py 中,我们写入以下代码:

    from flask import Flask
    
    def create_app():
        app = Flask(__name__)
    
        @app.route("/")
        def hello():
            return "

    hello world

    "
    return app
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    然后在 flask_blog/ 文件夹下执行下面的命令,运行 Flask:

    flask run
    
    • 1

    看到输出下面的输出就说明项目已经启动起来了:

    ...
    * Running on http://127.0.0.1:5000/ 
    Press CTRL+C to quit
    
    • 1
    • 2
    • 3

    然后访问服务器 5000 端口就可以看到返回内容了。

    在这里我们使用 @app.route() 指定路由,然后直接 return 一个 html 文本,我们在浏览器访问的时候就会自动渲染。

    指定端口

    不指定的话,Flask 运行自动使用 5000 端口,如果要指定其他端口,使用 --port 参数指定。

    flask run --port=9898
    
    • 1

    允许其他地址访问

    如果希望其他服务器访问的话,加上 --host=0.0.0.0

    debug模式

    如果是在开发阶段,可以加上 --debug 参数,会自动检测系统代码变化然后重启系统。

    2、Flask 获取配置

    Flask 获取配置信息有几种方式,一种是从文件中获取,一种是从定义好的 dict 里获取。

    从文件中获取配置

    从文件里获取提供了几种方式:

    app.config.from_object("app.config")
    
    app.config.from_pyfile("./config.py")
    
    • 1
    • 2
    • 3

    我们在 app/ 文件夹下创建了一个 config.py 文件,其内容如下:

    ABC = "123"
    
    • 1

    在执行完 from_object 或者 from_pyfile 操作之后,可以通过下面的操作获取到这些配置信息:

    app.config.get("ABC")
    
    • 1

    从 dict 中获取配置

    除了从文件中获取,我们还可以使用 from_mapping() 函数,将需要写入的配置放到 dict 里:

    app.config.from_mapping({
        "ABC": "123"
    })
    
    • 1
    • 2
    • 3

    注意:我们从文件中或者从 dict 中获取的变量名称都应该是大写的,否则系统不会读入。

    3、区分开发环境和生产环境变量

    在实际开发中,我们可能需要区分开发环境和生产环境,并且根据不同的环境读取不同的环境变量,就这个问题,这里提供一个方案

    app/ 文件夹下,创建一个 config/ 文件夹,在 config/ 文件夹下创建三个文件:config.pyproduction.pydevelopment.py

    config
        ├── config.py
        ├── development.py
        └── production.py
    
    • 1
    • 2
    • 3
    • 4

    config.py 的内容如下:

    import os
    
    if os.getenv("FLASK_ENV") == "production":
        from .production import *
    else:
        from .development import *
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    根据当前环境设置的 FLASK_ENV 是否为 production 来判断并选择加载对应的变量文件。

    app/__init__.py 中还是正常加载 app.config.config 即可:

    app.config.from_object("app.config.config")
    
    • 1
  • 相关阅读:
    Azkaban
    HPE Aruba Networking:网络在协调科技创新和安全风险之间扮演关键角色
    Day05-Java入门语言基础之循环
    【COMP329 LEC3】
    2022-10-30 mysql列存储引擎-自定义函数-return返回select语句结果异常-问题定位
    [linux] 安装WEB服务器(tomcat),环境是32位
    Unity优化技巧,此时无光胜有光
    基于SSM框架的文章管理系统
    ASRT从零搭建并测试
    CountDownLatch闭锁原理解析
  • 原文地址:https://blog.csdn.net/weixin_43354181/article/details/134521863