我在愚蠢的练习应用程序中使用 Flask-OpenID 进行用户登录。
首先要做的是创建一个 openid 对象,稍后用于装饰登录处理程序(和其他东西):
oid = flask.ext.openid.OpenID(app, '/path/to/store')
@oid.loginhandler
def login():
...
@oid.after_login
def after_login():
...
但是,我想在我的应用程序__init__.py文件中初始化 Flask-OpenID,但在其他文件中使用 OpenId 对象oid,例如我的应用程序views.py文件和可能的其他文件。执行此操作的预期方法是什么?烧瓶开发人员通常如何使oid应用程序具有全局性?
在这个类似的问题中,SQLAlchemy 对象被移动到models模块中,但在应用程序设置期间在其他地方初始化,这很有意义,因为该db对象与模型耦合。OpenID 对象遵循相同的模式。但我不想oid投入views.py;它显然不属于那里。那么你会把它放在哪里呢?我可以想到解决方案,但我想知道烧瓶开发人员通常会做什么。这里有一些想法:
oid在那里放入__init__.py并初始化它。在这个选项中,如何oid在应用模块的另一部分访问?为与 Flask-OpenID 和 Flask-Login 关联的对象和方法创建一个
auth.py文件。然后auth.oid可以在应用程序的任何地方工作。然后我是否为每个没有直接耦合到其他地方的扩展创建一个新文件?这是矫枉过正,还是扩大规模和保持井井有条的正确模式?或者,为所有这些小扩展对象创建一个文件,可能称为
globals.py或exts.py. 这看起来很尴尬和笨拙。还是大多数烧瓶应用程序最终都有一个随机桶来存放所有其他只需要位于某个地方的垃圾?