Możesz użyć sesji Flask do śledzenia czasu rozpoczęcia. Jest zaimplementowany w plikach cookie przeglądarki.
http://flask.pocoo.org/docs/0.12/quickstart/#sessions
Musisz zaimplementować tajny klucz dla aplikacji (jak pokazano w przykładzie szybkiego startu), a następnie możesz użyć session
obiekt jako magazyn kluczowych wartości dla informacji specyficznych dla użytkownika.
W konkretnym przypadku użycia może to być coś takiego:
@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()
przed sprawdzeniem poprawności formularza nie zadziałało, ponieważ:
- ta zmienna byłaby lokalna w zakresie funkcji i nie byłaby zachowywana po zakończeniu funkcji
- nawet jeśli zmienna nie była lokalna w zakresie wywołania funkcji, ta sama funkcja jest wywoływana zarówno dla GET, jak i POST, więc zostanie nadpisana, gdy użytkownik opublikuje formularz
Jeszcze jedną rzeczą, o której należy pamiętać, jest to, że nie możesz ufać, że użytkownik używa plików cookie lub zezwala na JavaScript, więc powinieneś rozważyć, jak Twój program poradzi sobie z czasem startu zerowego w bazie danych.