小编Cou*_*cha的帖子

从 Flask 应用程序中的外部应用程序上下文访问应用程序对象

如果 api-key 在请求标头内无效(或未指定),我已经为我的路由函数设置了一个装饰器来中止(401)。

因此,我在主模块(名为 app)的专用文件中定义了此函数,并将其导入到我的所有蓝图定义中。但从这个文件中,我无法访问应用程序对象来加载存储在 config.json 中的 API 密钥。我尝试使用 current_app,但出现错误告诉我无法在应用程序上下文之外使用它。我无法直接从应用程序模块导入应用程序对象,因为它会导致循环导入。

如果我在文件内声明装饰器__init__.py,我将面临同样的问题:我将无法从应用程序模块导入 require_apikey 函数,因为蓝图模块已在应用程序模块中导入以进行蓝图注册。

我认为我的设计存在一些问题。你能指出我的缺陷并帮助我改正吗?

我的项目目录如下所示:

project/
 - run.py
 - app/
 - - __init__.py
 - - player.py
 - - require_apikey.py
Run Code Online (Sandbox Code Playgroud)

以下是这些文件的内容:

# run.py
from app import app

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)
# app/__init__.py

from flask import (
    Flask,
    render_template,
    jsonify)

from app.db import db

from app.player import player

app = Flask(__name__)
app.config.from_object("app.config.Config")
app.register_blueprint(player, url_prefix="/player/")

db.init_app(app)

with app.app_context():
    db.create_all()
Run Code Online (Sandbox Code Playgroud)
# app/player.py

from flask import (
    Blueprint,
    request,
    abort,
    jsonify) …
Run Code Online (Sandbox Code Playgroud)

python api config key flask

4
推荐指数
1
解决办法
3221
查看次数

标签 统计

api ×1

config ×1

flask ×1

key ×1

python ×1