Python之Flask工程搭建

1. 安装

# 创建一个虚拟环境
mkvirtualenv flask -p python3
# 选择这个虚拟环境
workon flask
# 安装flask
pip install flask

2. Hello World

创建一个python工程start,选择安装了flask的虚拟环境

创建helloworld.py文件

# 导入flask
from flask import Flask


# 创建Flask类,并接受一个__name__参数
app = Flask(__name__)


# 配置url路由  ==>  /
@app.route('/')
# 创建一个视图
def index():
    return "hello world"


if __name__ == '__main__':
    # 已Flask实例启动
    app.run()

启动运行
python helloworld.py
或:
直接pycharm运行

测试访问:http://127.0.0.1:5000/

3. Flask参数说明

  • Flask对象的初始化参数
  • 应用程序配置参数
  • app.run()运行参数

3.1 Flask对象初始化参数

Flask 程序实例在创建的时候,默认需要传入当前Flask程序所指定的包(模块)。其他的一些在Flask应用程序在创建的时候需要关注的参数如下:

  • import_name

    • Flask程序所在的包(模块) ,传__name__就可以
    • 其可确定Flask在访问静态文件时查找的路径
  • static_url_path

    • 静态文件访问路径,可以不传,默认为:/ + staitc_folder
  • static_folder

    • 静态文件存储的文件夹,可以不传,默认为 static
  • template_folder

    • 模板文件存储的文件夹,可以不传默认为 templates

默认参数情况下

app = Flask(__name__)

文件目录结构
HelloWorld目录结构
此时,访问http://127.0.0.1:5000/static/1.png 就可以访问到图片资源

3.2 应用程序配置参数

对于Flask对象,初始化参数仅仅设置了Flask本身的属性,比如:

  • Flask从哪里读取静态文件
  • Flask从哪里读取模板文件

应用程序配置参数设置的是一个Web应用工程的相关信息,比如:

  • 数据库的连接配置
  • 日志的配置信息
  • 自定义的配置信息

作用

集中管理项目的所有配置信息

使用方式

Django将所有配置信息都放到了settings.py文件,而Flask不同。
Flask将配置信息保存到了app.config属性中,该属性可按照字典类型进行操作。

读取

  • app.config.get(name)
  • app.config[name]

设置
主要使用以下三种方式

  • 从配置对象中加载

app.config.from_object(配置对象)

# 导入flask
from flask import Flask

class DefaultConfig:
    """默认配置类"""
    SECRET_KEY = "abcdefghjklmn"

# 创建Flask类,并接受一个__name__参数
app = Flask(__name__)

# 加载配置
app.config.from_object(DefaultConfig)

# 配置url路由  ==>  /
@app.route('/')
# 创建一个视图
def index():
    return "hello world"


if __name__ == '__main__':
    # 查看配置
    print(app.config['SECRET_KEY'])
    # 已Flask实例启动
    app.run()

应用场景:
作为默认配置写在程序代码中
可以继承

class DevelopmentConfig(DefaultConfig):
    DEBUG = True
  • 从配置文件中加载

app.config.from.pyfile(配置文件)

新建一个配置文件settings.py

# 导入flask
from flask import Flask

# 创建Flask类,并接受一个__name__参数
app = Flask(__name__)

# 加载配置
app.config.from_pyfile("settings.py")

# 配置url路由  ==>  /
@app.route('/')
# 创建一个视图
def index():
    return "hello world"


if __name__ == '__main__':
    # 查看配置
    print(app.config['SECRET_KEY'])
    # 已Flask实例启动
    app.run()

应用场景:
在项目中使用固定的配置文件

  • 从环境变量中加载

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。

Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为

app.config.from_envvar(环境变量名)

环境变量的值为配置文件的绝对路径

测试:
现在在pycharm终端执行命令,创建一个环境变量

set PROJECT_SETTING=F:\Python-Workspace\python-flask\start\settings.py

在代码中使用

# 导入flask
from flask import Flask

# 创建Flask类,并接受一个__name__参数
app = Flask(__name__)

# 加载配置
app.config.from_envvar('PROJECT_SETTING', silent=True)

# 配置url路由  ==>  /
@app.route('/')
# 创建一个视图
def index():
    return "hello world"


if __name__ == '__main__':
    # 查看配置
    print(app.config['SECRET_KEY'])
    # 已Flask实例启动
    app.run()

关于 silent 的说明:
表示系统环境变量中没有设置相应的值是是否抛出异常

  • False 表示不安静的处理,没有值时报错通知,默认为False
  • True 示安静的处理,即时没有值也让Flask正常的运行下去

Pycharm运行时设置环境变量的其他方式

修改配置
在这里插入图片描述
在这里插入图片描述
应用场景:
配置文件的地址不固定
在代码中不想暴露真实的配置文件地址,只在运行代码的服务器上才有真实配置文件的信息

常用方式
使用工厂模式创建Flask app,并结合使用配置对象与环境变量加载配置

  • 使用配置对象加载默认配置
  • 使用环境变量加载不想出现在代码中的敏感配置信息
# 导入flask
from flask import Flask

def create_flask_app(config):
    # 创建Flask类,并接受一个__name__参数
    app = Flask(__name__)

    # 加载配置类
    app.config.from_object(config)
    # 加载配置
    app.config.from_envvar('PROJECT_SETTING', silent=True)

    return app


class DefaultConfig:
    """默认配置"""
    SECRET_KEY = 'abc'

class DevelopmentConfig(DefaultConfig):
    DEBUG = True
    
# app = create_flask_app(DefaultConfig)

app = create_flask_app(DevelopmentConfig)

# 配置url路由  ==>  /
@app.route('/')
# 创建一个视图
def index():
    return "hello world"


if __name__ == '__main__':
    # 已Flask实例启动
    app.run()

3.3 app.run 参数
可以指定运行的注解IP地址、端口、是否开启调试模式

app.run(host='localhost', port=8080, debug=True)

关于DEBUG调试模式

  1. 程序代码修改后可以自动重启服务器
  2. 在服务器出现相关错误的时候可以直接将错误信息返回到前端进行展示

4. 开发服务器启动方式

在1.0版本之后,Flask调整了开发服务器的启动方式,由代码编写app.run()语句调整为命令flask run启动。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World'

# 程序中不用再写app.run()

4.1 终端启动

set FLASK_APP=helloworld.py

# set FLASK_ENV=development

flask run

说明

  • 环境变量 FLASK_APP 指明flask的启动实例

  • flask run -h 0.0.0.0 -p 8000 绑定地址 端口

  • flask run --help获取帮助

  • 生产模式与开发模式的控制

    通过FLASK_ENV环境变量指明
    export FLASK_ENV=production 运行在生产模式,未指明则默认为此方式
    export FLASK_ENV=development运行在开发模式

4.2 Pycharm启动

设置环境变量
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值