Vous avez déjà mentionné sessions, je pense qu'ils sont la solution à votre problème :
Flask-Session est une extension pour Flask qui ajoute la prise en charge des Sessions côté serveur à votre application.
Voici un exemple de comment faire cela avec une session. Il stocke trois compteurs, un pour les accès totaux à l'application et deux pour les accès aux routes individuelles. Si vous appelez /A
trois fois puis /B
, cela vous donnera
accédé à B 1 fois, accès à l'application 4 fois
from flask import Flask, session
from flask_session import Session
app = Flask(__name__)
# Vérifiez la section Configuration pour plus de détails
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)
@app.route('/')
def reset():
session["counterA"]=0
session["counterB"]=0
session["counterTotal"]=0
return "tous les compteurs ont été réinitialisés"
@app.route('/A')
def routeA():
if not "counterA" in session:
session["counterA"]=0
if not "counterTotal" in session:
session["counterTotal"]=0
session["counterA"]+=1
session["counterTotal"]+=1
return "accédé à A {} fois, accès à l'application {} fois".format(session["counterA"], session["counterTotal"])
@app.route('/B')
def routeB():
if not "counterB" in session:
session["counterB"] = 0
if not "counterTotal" in session:
session["counterTotal"] = 0
session["counterB"] += 1
session["counterTotal"] += 1
return "accédé à B {} fois, accès à l'application {} fois".format(session["counterB"], session["counterTotal"])
if __name__ == '__main__':
app.run()
La session se comporte comme un dictionnaire et est disponible sur toutes les routes. Vous pouvez simplement y mettre votre compteur.
Pour des raisons de complétude, une solution sans sessions est également possible : En principe, les routes flask se comportent exactement comme des fonctions python. Ainsi, ce qui suit fonctionnera :
counter = 0
@app.route('/questions')
def user_input():
global counter
print(counter)
counter+=1
@app.route('/answers')
def results():
global counter
print(counter)
counter+=1
Je déconseille l'utilisation des variables globales, elles peuvent rendre votre code très difficile à lire et ne sont pas sûres en termes de threads.