栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将Flask类扩展为主应用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将Flask类扩展为主应用

这样做是没有意义的。您将通过子类

Flask
更改其内部行为,而不是将路由定义为类方法。

相反,您正在寻找蓝图和应用程序工厂模式。蓝图将您的视图分为几类,而不需要任何应用程序,并且工厂只有在调用时才创建和设置应用程序。

my_app/users/__init__.py

from flask import Blueprintbp = Blueprint('users', __name__, url_prefix='/users')

my_app/users/views.py

from flask import render_templatefrom my_app.users import bp@bp.route('/')def index():    return render_template('users/index.html')

my_app/__init__.py

def create_app():    app = Flask(__name__)    # set up the app here    # for example, register a blueprint    from my_app.users import bp    app.register_blueprint(bp)    return app

run.py

from my_app import create_appapp = create_app()

使用以下命令运行开发服务器:

FLASK_APP=run.pyFLASK_DEBUG=Trueflask run

如果您需要访问视图中的应用程序,请使用

current_app
,就像
request
在视图中访问请求一样。

from flask import current_appfrom itsdangerous import URLSafeSerializer@bp.route('/token')def token():    s = URLSafeSerializer(current_app.secret_key)    return s.dumps('secret')

如果你 真的
要定义路线的瓶子类的方法,你需要使用

self.add_url_rule
__init__
,而不是局部装饰每条路线。

class MyFlask(Flask):    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.add_url_rule('/', view_func=self.index)    def index(self):        return render_template('index.html')

route
(和
self
)无法使用的原因是因为它是一个实例方法,但是在定义类时没有实例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号