sql >> Database >  >> RDS >> PostgreSQL

Python/Flask:hoe weet ik hoe lang een gebruiker op een pagina doorbrengt? (App voor gegevensinvoer / tijdlogboek)

U kunt een Flask-sessie gebruiken om de starttijd bij te houden. Het is geïmplementeerd bovenop browsercookies.

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

U moet een geheime sleutel voor de app implementeren (zoals weergegeven in het snelstartvoorbeeld), en dan kunt u de session gebruiken object als een sleutelwaardeopslag voor gebruikersspecifieke informatie.

Voor uw specifieke gebruik kan het zoiets zijn als:

@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() voordat de formuliervalidatie niet werkte omdat:

  • deze variabele zou lokaal zijn voor het bereik van de functie en zou niet blijven bestaan ​​nadat de functie is voltooid
  • zelfs als de variabele niet lokaal was binnen het bereik van de functieaanroep, wordt dezelfde functie aangeroepen voor zowel GET als POST, dus het zou worden overschreven wanneer de gebruiker het formulier post

Nog iets om op te letten, is dat u niet kunt vertrouwen dat de gebruiker cookies gebruikt of JavaScript toestaat, dus u moet overwegen hoe uw programma omgaat met null-starttijden in de database.




  1. Rownum in postgresql

  2. Afbeelding van MySQL naar tableWidget krijgen in PyQt5

  3. Hoe WordPress te installeren:de serversoftware

  4. Oracle - bindvariabele gebruiken in LIKE-clausule van dynamische cursor