PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Python/Flask:Jak sprawdzić, ile czasu użytkownik spędza na stronie? (Aplikacja do wprowadzania danych/dziennika)

Możesz użyć sesji Flask do śledzenia czasu rozpoczęcia. Jest zaimplementowany w plikach cookie przeglądarki.

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

Musisz zaimplementować tajny klucz dla aplikacji (jak pokazano w przykładzie szybkiego startu), a następnie możesz użyć session obiekt jako magazyn kluczowych wartości dla informacji specyficznych dla użytkownika.

W konkretnym przypadku użycia może to być coś takiego:

@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() przed sprawdzeniem poprawności formularza nie zadziałało, ponieważ:

  • ta zmienna byłaby lokalna w zakresie funkcji i nie byłaby zachowywana po zakończeniu funkcji
  • nawet jeśli zmienna nie była lokalna w zakresie wywołania funkcji, ta sama funkcja jest wywoływana zarówno dla GET, jak i POST, więc zostanie nadpisana, gdy użytkownik opublikuje formularz

Jeszcze jedną rzeczą, o której należy pamiętać, jest to, że nie możesz ufać, że użytkownik używa plików cookie lub zezwala na JavaScript, więc powinieneś rozważyć, jak Twój program poradzi sobie z czasem startu zerowego w bazie danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać listy jako źródła parametrów dla zapytań SQL z klientem Vertx JDBC?

  2. Postgres FK nawiązujący do kompozytu PK

  3. Railsy has_many :przez PG::Error:ERROR:identyfikator odniesienia do kolumny jest niejednoznacznym błędem

  4. Jak scalić wszystkie tablice liczb całkowitych ze wszystkich rekordów w jedną tablicę w postgresie?

  5. Pobierz N-ty element tablicy, który zwraca z funkcji string_to_array()