Учебники

TurboGears — Cookies & Sessions

Часто требуется хранить данные простого просмотра, прикрепленные к браузеру пользователя. Сессии являются наиболее часто используемой техникой. Сеанс представляет данные, которые не нужно хранить в более постоянной форме, такой как файл на диске или база данных.

Однако данные сеанса в TurboGears могут быть поддержаны файловой системой, базой данных или хешированными значениями cookie. Небольшое количество данных сеанса обычно хранится в файлах cookie, но для большего объема данных сеанса используется MemCache.

MemCache — это демон системного уровня. Он обеспечивает быстрый доступ к кэшированным данным и чрезвычайно масштабируем. Однако он предназначен для использования только на защищенных серверах и, следовательно, должен поддерживаться и защищаться сисадмином.

Стакан в управлении сессиями

TurboGears использует Beaker для управления сессиями. Проект, запущенный с помощью коробки передач, по умолчанию настроен на использование хешированных файлов cookie для хранения данных сеанса.

Каждый раз, когда клиент подключается, промежуточное программное обеспечение сеанса (Beaker) будет проверять файл cookie, используя имя файла cookie, которое было определено в файле конфигурации. Если cookie не найден, он будет установлен в браузере. При всех последующих посещениях промежуточное программное обеспечение будет находить cookie и использовать его.

Чтобы включить управление сеансом, класс сеанса должен быть включен в проект, следуя инструкции import —

from tg import session

Чтобы сохранить данные в переменной сеанса —

session[‘key’] = value
session.save()

Чтобы получить переменную сеанса —

return session[‘key’]

Обратите внимание, что вам нужно явно сохранить сеанс, чтобы ваши ключи были сохранены в этом сеансе.

Метод delete () объекта сеанса удалит все сеансы пользователя —

session.delete()

Даже если не принято удалять все пользовательские сеансы в любой производственной среде, вы обычно делаете это для очистки после выполнения юзабилити или функциональных тестов.

Ниже приведен простой пример демонстрации сессий. Класс RootController имеет метод setsession (), который устанавливает переменную сеанса.

from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
   
   @expose()
   def setsession(self):
      session['user'] = 'MVL'
      session.save()
      
      str = "<b>sessionVariable set to "+session['user'] 
      str = str+"<br><a href = '/getsession'>click here to retrieve</a></b>"
      return str
   
   @expose()
   def getsession(self):
      return "<b>value of session variable retrieved " +session['user'] +"</b>"

Введите http: // localhost: 8080 / setsession

сессия

Ссылка в браузере ведет на http: // localhost: 8080 / getsession, который извлекает и отображает переменную сеанса —