sql >> Base de Datos >  >> RDS >> PostgreSQL

Python/Flask:¿Cómo saber cuánto tiempo pasa un usuario en una página? (Aplicación de entrada de datos/registro de tiempo)

Puede usar una sesión de Flask para realizar un seguimiento de la hora de inicio. Se implementa sobre las cookies del navegador.

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

Debe implementar una clave secreta para la aplicación (como se muestra en el ejemplo de inicio rápido), y luego puede usar la session objeto como almacén de valor clave para información específica del usuario.

Para su caso de uso particular, podría ser algo como:

@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() antes de que la validación del formulario no funcionara porque:

  • esta variable sería local para el alcance de la función y no persistiría después de que se complete la función
  • incluso si la variable no fuera local para el alcance de la llamada a la función, se llama a la misma función tanto para GET como para POST, por lo que se anularía cuando el usuario publique el formulario

Una cosa más a tener en cuenta es que no puede confiar en que el usuario use cookies o permita JavaScript, por lo que debe considerar cómo su programa manejaría los tiempos de inicio nulos en la base de datos.