Flaskセッションを使用して、開始時間を追跡できます。ブラウザのCookieの上に実装されています。
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の両方で同じ関数が呼び出されるため、ユーザーがフォームを投稿するとオーバーライドされます
もう1つ注意しなければならないのは、ユーザーがCookieを使用していることやJavaScriptを許可していることを信頼できないことです。そのため、プログラムがデータベース内のnull開始時間をどのように処理するかを検討する必要があります。