Уведомления

Группа в Telegram: присоединиться | Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Март 23, 2007 15:59:32

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

nevow sessions

Есть стандартный пример, описывающий работу с сессиями в nevow:
from twisted.application import service, strports
from nevow import appserver

from nevow import rend, loaders, tags as t, inevow

class RootPage(rend.Page):
addSlash = True
def display_session(self, ctx, data):
return inevow.ISession(ctx).uid

docFactory = loaders.stan(
t.html[t.head[t.title],
t.body]
)

application = service.Application('Foobar')
site = appserver.NevowSite(RootPage())
server = strports.service('8080', site)
server.setServiceParent(application)

В разных экземплярах браузеров uid разный, но в одном экземпляре в разных табах значения uid равны.
С этим можно как-то бороться?

Спасибо.



Отредактировано (Март 23, 2007 16:00:09)

Офлайн

#2 Март 24, 2007 07:45:12

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

nevow sessions

Не воспроизводится.

Версии twisted, nevow, браузер, платформа?

У меня:
twisted-2.5.0+r19883
nevow-0.9.17+r11731
ff2 gecko/20061205/iceweasel/2.0.0.1
debian testing



Отредактировано (Март 24, 2007 07:48:36)

Офлайн

#3 Март 25, 2007 05:27:18

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

nevow sessions

Сервер:
Платформа SunOS 5.9 sparc, python 2.5, twisted 2.5.0, nevow 0.9.17
или
WinXP, cygwin, python 2.5(cygwin), nevow 0.9.18, twisted 2.5.0
или даже
WinXP, python 2.4.4(win), nevow 0.9.18, twisted 2.4.0

Клиент:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
или
Opera 9.10 Build 8679

Даже теряюсь…



Отредактировано (Март 25, 2007 06:10:43)

Офлайн

#4 Март 25, 2007 07:28:14

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

nevow sessions

Домашняя машина:
Ноут, Ubuntu 6.06, python 2.4.3, nevow 0.9.17, twisted 2.5.0.
Проверено на Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070302 Ubuntu/dapper-security Firefox/1.5.0.10 и links 1.00pre12.

Кстати, запускаю
twistd -noy fileName.py

uid сессий равны даже для разных экземпляров одного броузера, не только в разных табах.
А вот для разных браузеров одновременно и юиды не равны.



Отредактировано (Март 25, 2007 07:32:00)

Офлайн

#5 Март 25, 2007 08:07:58

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

nevow sessions

jan2ary
uid сессий равны даже для разных экземпляров одного броузера, не только в разных табах.
Вот это правильное поведение. Это ж uid сессии. Сессия одна и та же. Это ж не uid запроса или ответа.

А вот для разных браузеров одновременно и юиды не равны.
Тоже правильно. Они же куки в разных местах хранят.



Офлайн

#6 Март 25, 2007 10:29:37

jan2ary
От:
Зарегистрирован: 2006-11-21
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

nevow sessions

Тогда, наверное, я не в ту сторону смотрю.
Хочу чтобы введенные данные никак не влияли на соседние табы, вдруг пользователю захочется делать одну операуию паралелльно в нескольких табах с разными данными. Например, если я работаю с данными в словаре data объекта типа form, то чтобы этот словарь был уникален для каждого таба. Даже скорее не сам этот словарь, а его копия, из которой при рендеринге странички будет загружаться data.
Если излагаю путано, позже запостю укороченный вариант формы.
Спасибо.



Офлайн

#7 Март 25, 2007 10:53:52

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

nevow sessions

У Nevow есть очень кривая штука: форма обрабатывается только в Page. Сделать так, чтобы форма рендерилась и обрабатывалась во фрагменте нельзя.

Подробности с кодом см. здесь

В нормальных инструментах обработка форм никак не связана с сессиями. В моем коде используется сессия потому, что я не нашел нормального способа передать данные из Page (где форма обрабатывается) в Fragment (где она рендерится).

В догонку:

Следущий момент, который заслуживает отдельного внимания, потому что я достаточно долго бился с ним. Формы. Уже во “Введении в Nevow” я обозначил некоторые проблемы Nevow-инструментов для обработки форм. Так вдобавок, ни formless, ни formal не имеют документации вообще, только примеры, причем с использованием nevow.loaders.stan. Но это еще не все. Обработка форм настолько кривая, что мне пришлось хачить ее для своего случая. Я не хочу особо вдаваться в подробности, лишь кратко скажу, что форма отрисовывается в фрагменте, а обрабатывается в странице, содержащей этот фрагмент. Ну и из-за абсолютно глупых ограничений, мне пришлось использовать механизм сессий, хотя в Django и Pylons я вполне успешно обошелся без них.



Отредактировано (Март 25, 2007 10:58:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version