烧瓶和flask_login - 避免从主代码导入flask_login [英] flask and flask_login - avoid importing flask_login from main code
问题描述
main.py
: import flask
import flask_login
$ b app = flask.Flask(__ name__)
login_manager = flask_login.LoginManager()
login_manager.init_app(app)
@ app.route('/')
@ flask_login.login_required
def index():
returnHello World!
上面的代码有效。问题出现了,因为我想从主要的应用程序代码中分离与认证相关的代码。换句话说,我想导入 flask_login
的 my_auth.py
,并且我想要 main。 py
到 import my_auth
,而不必导入 flask_login
。
问题在于 @ flask_login.login_required
修饰符。如果我不从 main.py
导入 flask_login
,是否仍然有可能包装主 index()
函数与 login_required
?
其实问了一个错误的问题之前,这可能仍然是相关的:烧瓶和flask_login - 组织代码)
创建一个文件 my_auth.py
p>
#my_auth.py
导入flask_login
login_manager = flask_login.LoginManager )
#创建login_required装饰器的别名
login_required = flask_login.login_required
和文件 main.py
#main。 py
从my_auth导入(
login_manager,
login_required
)
$ b $ app = flask.Flask(__ name__ )
login_mana ger.init_app(app)
@ app.route('/')
@login_required
def index():
returnHello World!
也许这就是你想达到的目的。
I am currently coding up a simple web application using flask and flask_login. This is main.py
:
import flask
import flask_login
app = flask.Flask(__name__)
login_manager = flask_login.LoginManager()
login_manager.init_app(app)
@app.route('/')
@flask_login.login_required
def index():
return "Hello World!"
The above code works. The problem arises because I want to separate authentication related code from the main flask application code. In other words, I want my_auth.py
that imports flask_login
, and I want main.py
to import my_auth
, and NOT have to import flask_login
.
The problem is with the @flask_login.login_required
decorator. If I do not import flask_login
from main.py
, is it still possible to somehow "wrap" the main index()
function with login_required
?
(I've actually asked a wrong question before, which may still be relevant: flask and flask_login - organizing code)
create a file my_auth.py
# my_auth.py
import flask_login
login_manager = flask_login.LoginManager()
# create an alias of login_required decorator
login_required = flask_login.login_required
and in file main.py
# main.py
import flask
from my_auth import (
login_manager,
login_required
)
app = flask.Flask(__name__)
login_manager.init_app(app)
@app.route('/')
@login_required
def index():
return "Hello World!"
Maybe this is what you want to achieve.
这篇关于烧瓶和flask_login - 避免从主代码导入flask_login的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!