2015-10-02 16 views
29

Tôi đang cố gắng hiểu sự khác biệt về chức năng và mục đích giữa gsession. Cả hai đều là đối tượng để 'treo' dữ liệu phiên, tôi có đúng không? Nếu vậy, những gì chính xác là sự khác biệt và cái nào tôi nên sử dụng trong những trường hợp gì?Bình: 'phiên' và 'g'?

Trả lời

40

Không, gkhông một đối tượng để treo dữ liệu phiên. g dữ liệu không được duy trì giữa các yêu cầu.

session cung cấp cho bạn một nơi để lưu trữ dữ liệu cho mỗi trình duyệt cụ thể. Là người dùng ứng dụng Flask của bạn, sử dụng một trình duyệt cụ thể, trả về cho nhiều yêu cầu hơn, dữ liệu phiên được chuyển qua các yêu cầu đó.

g mặt khác là chia sẻ dữ liệu giữa các bộ phận khác nhau của cơ sở mã của bạn trong vòng một yêu cầu chu kỳ. g có thể được thiết lập trong thời gian before_request móc, vẫn có sẵn trong giai đoạn teardown_request và sau khi yêu cầu được thực hiện và gửi cho khách hàng, g sẽ bị xóa.

+7

Dữ liệu 'phiên' là 'mỗi khách hàng' (dựa trên cookie?) Và 'g' là dữ liệu theo yêu cầu? –

+5

@AvivCohn: chính xác. Ưu điểm của 'g' là nó tồn tại trên tất cả yêu cầu của bạn, là chuỗi an toàn và cụ thể cho ứng dụng hiện tại của bạn (nếu bạn dùng * nest * Ứng dụng Flask trong đó một cuộc gọi khác trở nên quan trọng). Vì vậy, bạn có thể thiết lập một đối tượng người dùng hoặc kết nối cơ sở dữ liệu bằng hook 'before_request', sau đó truy cập cùng một người dùng hoặc kết nối trong các mẫu của bạn, và vẫn có sẵn trong một móc kéo mà không cần phải chuyển nó cho mỗi cuộc gọi. –

Các vấn đề liên quan