I am using Flask to build a very small one-page dynamic website. I want to share a list of variables and their values across functions without using a class.
I looked into Flask's View
class, however I feel as if my application isn't large enough nor complex enough to implement a class-based version of my project using Flask. If I'm stating correctly I would also lose the ability to use the route
decorator and would have to use its surrogate function add_url_rule
.
Which would also force me to refactor my code into something such as this:
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'))
For variable sharing I thought of two techniques.
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)
How do I share data between requests? and Store large data or a service connection per Flask session. Show activity on this post. The link to route /b in the template for /a could have query parameters added to it, which you could read in the route for /b .
A view function is the code you write to respond to requests to your application. Flask uses patterns to match the incoming request URL to the view that should handle it. The view returns data that Flask turns into an outgoing response.
I believe what you are looking for is the application local g
. According to the documentation
Just store on this whatever you want.
It meets your needs here exactly.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With