Ke sledování času zahájení můžete použít relaci Flask. Je implementován nad soubory cookie prohlížeče.
http://flask.pocoo.org/docs/0.12/quickstart/#sessions
Pro aplikaci musíte implementovat tajný klíč (jak je znázorněno v příkladu rychlého startu) a poté můžete použít session
objekt jako úložiště klíčových hodnot pro informace specifické pro uživatele.
Pro váš konkrétní případ použití to může být něco jako:
@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()
předtím, než ověření formuláře nefungovalo, protože:
- tato proměnná by byla lokální vzhledem k rozsahu funkce a po dokončení funkce by nepřetrvávala
- i kdyby proměnná nebyla lokální vzhledem k rozsahu volání funkce, stejná funkce se volá pro GET i POST, takže když uživatel odešle formulář, byla by přepsána
Ještě jednu věc, kterou je třeba si uvědomit, je, že nemůžete věřit uživateli, že používá soubory cookie nebo že povolí JavaScript, takže byste měli zvážit, jak by váš program naložil s nulovými časy spuštění v databázi.