Найти - Пользователи
Полная версия: nevow sessions
Начало » Web » nevow sessions
1
jan2ary
Есть стандартный пример, описывающий работу с сессиями в 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 равны.
С этим можно как-то бороться?

Спасибо.
j2a
Не воспроизводится.

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

У меня:
twisted-2.5.0+r19883
nevow-0.9.17+r11731
ff2 gecko/20061205/iceweasel/2.0.0.1
debian testing
jan2ary
Сервер:
Платформа 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

Даже теряюсь…
jan2ary
Домашняя машина:
Ноут, 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 сессий равны даже для разных экземпляров одного броузера, не только в разных табах.
А вот для разных браузеров одновременно и юиды не равны.
j2a
jan2ary
uid сессий равны даже для разных экземпляров одного броузера, не только в разных табах.
Вот это правильное поведение. Это ж uid сессии. Сессия одна и та же. Это ж не uid запроса или ответа.

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

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

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

В догонку:
Следущий момент, который заслуживает отдельного внимания, потому что я достаточно долго бился с ним. Формы. Уже во “Введении в Nevow” я обозначил некоторые проблемы Nevow-инструментов для обработки форм. Так вдобавок, ни formless, ни formal не имеют документации вообще, только примеры, причем с использованием nevow.loaders.stan. Но это еще не все. Обработка форм настолько кривая, что мне пришлось хачить ее для своего случая. Я не хочу особо вдаваться в подробности, лишь кратко скажу, что форма отрисовывается в фрагменте, а обрабатывается в странице, содержащей этот фрагмент. Ну и из-за абсолютно глупых ограничений, мне пришлось использовать механизм сессий, хотя в Django и Pylons я вполне успешно обошелся без них.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB