U kunt een Flask-sessie gebruiken om de starttijd bij te houden. Het is geïmplementeerd bovenop browsercookies.
http://flask.pocoo.org/docs/0.12/quickstart/#sessions
U moet een geheime sleutel voor de app implementeren (zoals weergegeven in het snelstartvoorbeeld), en dan kunt u de session
gebruiken object als een sleutelwaardeopslag voor gebruikersspecifieke informatie.
Voor uw specifieke gebruik kan het zoiets zijn als:
@app.route('/logpage', methods=['GET', 'POST'])
@login_required
def logpage():
form = LogForm()
if form.validate_on_submit():
entry = LogData(sessionid=form.sessionid.data, user_id=current_user.get_id(),
starttime=session.pop('start_time', None), endtime=datetime.utcnow())
db.session.add(entry)
db.session.commit()
return redirect(url_for('home'))
session['start_time'] = datetime.utcnow()
return render_template('logpage.html', form=form)
pageload = datetime.utcnow()
voordat de formuliervalidatie niet werkte omdat:
- deze variabele zou lokaal zijn voor het bereik van de functie en zou niet blijven bestaan nadat de functie is voltooid
- zelfs als de variabele niet lokaal was binnen het bereik van de functieaanroep, wordt dezelfde functie aangeroepen voor zowel GET als POST, dus het zou worden overschreven wanneer de gebruiker het formulier post
Nog iets om op te letten, is dat u niet kunt vertrouwen dat de gebruiker cookies gebruikt of JavaScript toestaat, dus u moet overwegen hoe uw programma omgaat met null-starttijden in de database.