PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Python/Flask :Comment savoir combien de temps un utilisateur passe sur une page ? (Application de saisie de données/journal de temps)

Vous pouvez utiliser une session Flask pour suivre l'heure de début. Il est implémenté au-dessus des cookies du navigateur.

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

Vous devez implémenter une clé secrète pour l'application (comme indiqué dans l'exemple de démarrage rapide), puis vous pouvez utiliser la session objet en tant que magasin de valeur clé pour des informations spécifiques à l'utilisateur.

Pour votre cas d'utilisation particulier, cela pourrait être quelque chose comme :

@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() avant la validation du formulaire ne fonctionnait pas car :

  • cette variable serait locale à la portée de la fonction et ne persisterait pas une fois la fonction terminée
  • même si la variable n'était pas locale à la portée de l'appel de fonction, la même fonction est appelée à la fois pour GET et POST, elle serait donc remplacée lorsque l'utilisateur publie le formulaire

Une autre chose à savoir est que vous ne pouvez pas faire confiance à l'utilisateur pour utiliser des cookies ou pour autoriser JavaScript, vous devez donc considérer comment votre programme gérerait les heures de début nulles dans la base de données.