Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pyramid.pdf
Скачиваний:
10
Добавлен:
24.03.2015
Размер:
3.82 Mб
Скачать

15. SESSIONS

15.4 Creating Your Own Session Factory

If none of the default or otherwise available sessioning implementations for Pyramid suit you, you may create your own session object by implementing a session factory. Your session factory should return a session. The interfaces for both types are available in pyramid.interfaces.ISessionFactory and pyramid.interfaces.ISession. You might use the cookie implementation in the pyramid.session module as inspiration.

15.5 Flash Messages

“Flash messages” are simply a queue of message strings stored in the session. To use flash messaging, you must enable a session factory as described in Using The Default Session Factory or Using Alternate Session Factories.

Flash messaging has two main uses: to display a status message only once to the user after performing an internal redirect, and to allow generic code to log messages for single-time display without having direct access to an HTML template. The user interface consists of a number of methods of the session object.

15.5.1 Using the session.flash Method

To add a message to a flash message queue, use a session object’s flash() method:

request.session.flash(’mymessage’)

The flash() method appends a message to a flash queue, creating the queue if necessary.

flash() accepts three arguments:

flash(message, queue=’‘, allow_duplicate=True)

The message argument is required. It represents a message you wish to later display to a user. It is usually a string but the message you provide is not modified in any way.

The queue argument allows you to choose a queue to which to append the message you provide. This can be used to push different kinds of messages into flash storage for later display in different places on a page. You can pass any name for your queue, but it must be a string. Each queue is independent, and can be popped by pop_flash() or examined via peek_flash() separately. queue defaults to the empty string. The empty string represents the default flash message queue.

174

15.5. FLASH MESSAGES

request.session.flash(msg, ’myappsqueue’)

The allow_duplicate argument defaults to True. If this is False, and you attempt to add a message value which is already present in the queue, it will not be added.

15.5.2 Using the session.pop_flash Method

Once one or more messages have been added to a flash queue by the session.flash() API, the session.pop_flash() API can be used to pop an entire queue and return it for use.

To pop a particular queue of messages from the flash object, use the session object’s pop_flash() method. This returns a list of the messages that were added to the flash queue, and empties the queue.

pop_flash(queue=’‘)

1 >>> request.session.flash(’info message’) 2 >>> request.session.pop_flash()

3 [’info message’]

Calling session.pop_flash() again like above without a corresponding call to session.flash() will return an empty list, because the queue has already been popped.

1

2

3

4

5

>>>request.session.flash(’info message’)

>>>request.session.pop_flash()

[’info message’]

>>> request.session.pop_flash() []

15.5.3 Using the session.peek_flash Method

Once one or more messages has been added to a flash queue by the session.flash() API, the session.peek_flash() API can be used to “peek” at that queue. Unlike session.pop_flash(), the queue is not popped from flash storage.

peek_flash(queue=’‘)

175

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]