sql >> Databasteknik >  >> RDS >> PostgreSQL

Python/Flask:Hur vet man hur länge en användare spenderar på en sida? (Datainmatning/tidsloggapp)

Du kan använda en Flask-session för att spåra starttiden. Det är implementerat ovanpå webbläsarcookies.

http://flask.pocoo.org/docs/0.12/quickstart/#sessions

Du måste implementera en hemlig nyckel för appen (som visas i snabbstartsexemplet), och sedan kan du använda session objekt som nyckelvärdeslagring för användarspecifik information.

För ditt specifika användningsfall kan det vara något i stil med:

@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() innan formulärvalideringen inte fungerade eftersom:

  • denna variabel skulle vara lokal för funktionens omfattning och skulle inte kvarstå efter att funktionen är klar
  • även om variabeln inte var lokal för funktionsanropets omfattning, anropas samma funktion för både GET och POST, så den skulle åsidosättas när användaren postar formuläret

En sak till att vara medveten om är att du inte kan lita på att användaren använder cookies eller tillåter JavaScript, så du bör överväga hur ditt program skulle hantera nollstarttider i databasen.




  1. Hur man returnerar alla inaktiverade främmande nyckelbegränsningar i SQL Server (T-SQL-exempel)

  2. Verktyg för att arbeta med lagrade procedurer i Oracle, i ett team?

  3. Får du EXAKTA matchningar från fulltextsökning returnerade först?

  4. Att skriva en funktion i plsql