sql >> データベース >  >> RDS >> PostgreSQL

Python / Flask:ユーザーがページに費やした時間を知る方法は? (データ入力/タイムログアプリ)

    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開始時間をどのように処理するかを検討する必要があります。




    1. SQLクエリのExcel日付パラメータ

    2. アドホックワークロードのパフォーマンスへの影響の調査

    3. PostgreSQL配列列のデフォルト値として空の配列

    4. Rails:rake db:create:allにデータベースを作成するためのPostgres権限が拒否されました