Можете да използвате сесия на Flask, за да проследите началния час. Внедрява се върху бисквитките на браузъра.
http://flask.pocoo.org/docs/0.12/quickstart/#sessions
Трябва да внедрите таен ключ за приложението (както е показано в примера за бърз старт), след което можете да използвате session
обект като хранилище на ключова стойност за специфична за потребителя информация.
За вашия конкретен случай на употреба може да е нещо като:
@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()
преди проверката на формуляра да не работи, защото:
- тази променлива ще бъде локална за обхвата на функцията и няма да се запази след завършване на функцията
- дори променливата да не е локална за обхвата на извикването на функцията, същата функция се извиква както за GET, така и за POST, така че ще бъде заменена, когато потребителят публикува формуляра
Още нещо, което трябва да имате предвид е, че не можете да се доверите на потребителя, че използва бисквитки или че позволява JavaScript, така че трябва да помислите как вашата програма ще обработва нулеви начални времена в базата данни.