我正在使用Flask构建一个非常小的单页动态网站。我想在不使用类的情况下在函数之间共享变量及其值的列表。
我查看了Flask的View
类,但是我觉得我的应用程序不够大,也不够复杂,无法使用Flask实现我的项目的基于类的版本。如果我正确陈述,我也将失去使用route
装饰器的能力,并且必须使用其代理函数add_url_rule
。
这也会迫使我将我的代码重构为像这样的东西:
from flask.views import View
class ShowUsers(View):
def dispatch_request(self):
users = User.query.all()
return render_template('users.html', objects=users)
app.add_url_rule('/users/', view_func=ShowUsers.as_view('show_users'))
对于变量共享,我想到了两种技术。
x = ""
def foo():
global x
x = request.form["fizz"]
def bar():
# do something with x (readable)
print(x)
def baz():
return someMadeupFunction(x)
def foo():
x = request.form["fizz"]
qux(someValue)
def qux(i):
menu = {
key0: bar,
key1: baz,
}
menu[i](x)
def bar(x):
# do something with x (readable)
print(x)
def baz(x):
return someMadeupFunction(x)
答案 0 :(得分:6)
我相信你要找的是application local g
。根据文件
只要存储在你想要的任何东西上。
这完全符合您的需求。
from flask import g
def foo():
g.x = request.form["fizz"]
def bar():
# do something with x (readable)
print(g.x)
def baz():
return someMadeupFunction(g.x)