2009-06-23 19 views

Trả lời

19

Sử dụng phương pháp response.setCookie(). Bạn có thể tiếp cận đối tượng phản hồi thông qua đối tượng yêu cầu. Sau đó bạn có thể đạt được thông qua mua lại (self.REQUEST), hoặc trong quan điểm bằng cách truy cập các đối tượng yêu cầu thông qua trong, thường là thông qua self.request:

self.request.response.setCookie(name, value, **options) 

nơi options cuối lên như thêm các thông số cookie. Do đó, việc chuyển cookie thành cookie không phải phiên sẽ yêu cầu từ khóa expires='date', giới hạn cookie thành đường dẫn là từ khóa path='/somepath' đến phương pháp setCookie(). Quy tắc cookie trình duyệt thông thường áp dụng ở đây.

Để hết hạn cookie đã được thiết lập trong trình duyệt, bạn có thể hoặc sử dụng một từ khóa expires='date in the past', hoặc bạn có thể sử dụng phương pháp response.expireCookie(), mà thực hiện điều này cho bạn:

self.request.response.expireCookie(name, **options) 

Trong trường hợp này bạn vẫn có thể bao gồm các tùy chọn như path hoặc các cờ cookie khác, nhưng phương pháp sẽ ghi đè các tùy chọn max_ageexpires để đảm bảo cookie bị xóa bởi trình duyệt.

Mặc dù bạn có thể sử dụng hỗ trợ SESSION của Zope, bạn thực sự cần phải suy nghĩ thông qua các vấn đề về khả năng mở rộng. Ví dụ, bạn cần phải suy nghĩ về cách dữ liệu phiên sẽ được chia sẻ trên một cụm nếu bạn sử dụng ZEO hoặc RelStorage. Thông thường, bạn nên tránh sử dụng SESSION nếu tính năng mở rộng có thể là một vấn đề.

+0

Cảm ơn phản hồi này! Chúng tôi chạy với 3-4 trường hợp cho mỗi ứng dụng zope vì vậy * không * phải lo lắng về trường hợp chúng tôi đang nhấn là một điều rất hay. – pydanny

6

Để đặt cookie bạn sử dụng RESPONSE.setCookie.

>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT') 

Cookie sẽ kết thúc trong YÊU CẦU trong yêu cầu tiếp theo.

>>> self.REQUEST['cookiename'] 
'cookievalue' 

Bạn "xóa" cookie bằng cách sử dụng None làm giá trị.

** Lưu ý, mặc dù, hầu hết thời gian khi mọi người sử dụng cookie để lưu các biến có liên quan đến phiên, và bạn có thể sử dụng self.REQUEST.SESSION cho điều đó, nó dễ dàng hơn.

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