как использовать сессию/cookie в twisted.web?

Вы можете использовать шаблон проектирования Делегирование :

class Swimmer {
    def swim() { "swimming" }
}

class Runner {
    def run() { "running" }
}

class Biker {
    def bike() { "biking" }
}

class Triathlete { 
    @Delegate Swimmer swimmer
    @Delegate Runner runner
    @Delegate Biker biker
}

def triathlete = new Triathlete(
    swimmer: new Swimmer(),
    runner: new Runner(),
    biker: new Biker()
)

triathlete.swim()
triathlete.run()
triathlete.bike()

В случае контроллера назначьте класс помощника непосредственно в поле экземпляра (или в нулевом конструкторе):

class HelperClass {
    def renderFoo() { render 'foo' }
}

class FooController {
    private @Delegate HelperClass helperClass = new HelperClass()

    def index = { this.renderFoo() }
}

Информация о типе делегата компилируется в содержащий класс.

9
задан Michael Petrotta 8 June 2009 в 02:12
поделиться

2 ответа

Вы можете использовать request.getSession (), чтобы получить компонентный объект.

Вы можете узнать больше о компонентном объекте в http://twistedmatrix.com/documents/current /api/twisted.python.components.Componentized.html - основной способ его использования заключается в определении интерфейса и реализации и отправке ваших on-объектов в сеанс.

4
ответ дан 4 December 2019 в 21:11
поделиться

Вызов getSession () создаст сеанс и добавит файл cookie для запроса:

исходный код getSession ()

Если у клиентов уже есть cookie сеанса, вызов getSession () прочитает его и вернет сеанс с исходным содержимым сеанса. Таким образом, для вашего кода прозрачно, создает ли он на самом деле файл cookie сеанса или просто читает его.

Файлы cookie сеанса имеют определенные свойства ... если вы хотите получить больший контроль над содержимым файла cookie, посмотрите Request.addCookie (), который getSession () вызывает за кадром.

4
ответ дан 4 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: