PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Python / Flask:Làm thế nào để biết người dùng dành bao lâu trên một trang? (Nhập dữ liệu / ứng dụng nhật ký thời gian)

Bạn có thể sử dụng phiên Flask để theo dõi thời gian bắt đầu. Nó được triển khai trên cookie của trình duyệt.

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

Bạn cần triển khai khóa bí mật cho ứng dụng (như được hiển thị trong ví dụ khởi động nhanh), sau đó bạn có thể sử dụng session đối tượng như một kho lưu trữ giá trị chính cho thông tin người dùng cụ thể.

Đối với trường hợp sử dụng cụ thể của bạn, nó có thể giống như:

@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() trước khi xác thực biểu mẫu không hoạt động vì:

  • biến này sẽ là cục bộ đối với phạm vi của hàm và sẽ không tồn tại sau khi hàm hoàn thành
  • ngay cả khi biến không cục bộ trong phạm vi của lệnh gọi hàm, thì cùng một hàm đang được gọi cho cả GET và POST, vì vậy nó sẽ bị ghi đè khi người dùng đăng biểu mẫu

Một điều nữa cần lưu ý là bạn không thể tin tưởng người dùng đang sử dụng cookie hoặc cho phép JavaScript, vì vậy bạn nên xem xét cách chương trình của bạn xử lý thời gian bắt đầu rỗng trong cơ sở dữ liệu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt tiện ích mở rộng hstore trong các bài kiểm tra mũi django

  2. LỖI:giá trị null trong id cột vi phạm ràng buộc not-null

  3. Postgres trên Rails FATAL:cơ sở dữ liệu không tồn tại

  4. Tìm tất cả các bảng phân vùng kế thừa từ bảng chính

  5. Postgresql tạo tiện ích mở rộng không thành công