Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2010 23:56:58

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Werkzeug: установить cookie

poltergeist
o7412369815963 В werkzeug есть очень-очень-очень много вкусного, о котором вы видимо и не задумывались пока, или вам это просто не нужно.
например, что такое значимое есть из-за чего можно мигрировать?
пока я увидел один плюс - сессии, походу работаю через алхимию, а я чаще использую монго, т.е. для меня не плюс.
а все остальное и тут есть.

Офлайн

#2 Июль 17, 2010 19:20:07

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Werkzeug: установить cookie

o7412369815963 Ну значит пока не надо мигрировать;)
А вообще в werkzeug есть очень подробный Request класс, описывающий всевозможные заголовки запроса (не сырые заголовки, а уже проанализированные и адаптированные для использования в питоне). Есть отличная дебаг-страница (лучшая наверное из всех). Есть очень гибкий и красивый диспатчер урлов. Встроенные средства для создания thread local (или иначе говоря request local) объектов. Есть начальный функционал для кэширования данных. Есть сессии, signed cookies и прочее прочее… И ещё это не фреймворк, это просто очень классная и гибкая библиотека для создания реальных проектов. И там нет ничего лишнего, только то, что действительно нужно.



Офлайн

#3 Июль 27, 2010 17:24:22

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Werkzeug: установить cookie

poltergeist
Вот тут всё расписано, пройдите туториал и поймёте в чём фишка
Фишка не описывается в двух предложениях? Обязательно проходить туториал?
Скажем так, мне надо, чтобы mod_wsgi был максимально похож на mod_python (или на php). Т.е. простой доступ к POST/GET/COOKIE/SESSION/HTTP HEADERS. Чтобы всё получалось и правилось очень-очень просто. GET и POST у меня должны обрабатываться одной и той же функцией. Эта же функция должна решать, какой заголовок отправить в ответ. Werkzeug может справиться с этой задачей?

Из http://werkzeug.pocoo.org/documentation/dev/quickstart.html#responses пример:
from werkzeug import Response
def application(environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
Вместо “Hello World!” я ставлю свою функцию main, которая генерит контент. Это сильно ошибочный подход?



Офлайн

#4 Июль 29, 2010 00:40:13

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Werkzeug: установить cookie

axe Туториал просто покажет как правильно и грамотно создать приложение, разместить всё по своим местам.

Если вам нужен простой доступ к request-у как к глобальному объекту из любой точки проекта, то вам понадобится сделать контекстную переменную, пример всё в том же туториале (http://werkzeug.pocoo.org/documentation/dev/tutorial.html#part-2-the-utilities), обратите там внимание на класс werkzeug.Local. Это безопасно при работе с многопоточностью.

А ещё лучше сам пример напишу:

from werkzeug import Request, Response, Local, LocalManager

local = Local()
local_manager = LocalManager([local])
request = local('request')

def application(environ, start_response):
local.request = Request(environ)
response = main(request) # ваш main
return response(environ, start_response)

application = local_manager.make_middleware(application)
Тут вы можете повсюду импортировать объект request - это контекстная переменная, которая имеет значение только во время обработки запроса, после запроса значение переменной очищается. Как я уже говорил, это абсолютно безопасно для многопоточности, у каждого потока будет своё значение request-та. Что делать с response-ом сами думайте. Советую строить приложение хотя бы приблизительно так, как в документации описано, говорю это не просто так, а по опыту работы над реально не маленьким проектом.



Офлайн

#5 Июль 29, 2010 19:03:20

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Werkzeug: установить cookie

poltergeist
Если вам нужен простой доступ к request-у как к глобальному объекту из любой точки проекта
он у меня и так есть:
axe
response = Response(main( Request(environ) ))
poltergeist
Что делать с response-ом сами думайте
что с ним можно делать вне функции main? ничего. по сути, я про это и спрашивал.
мне нужна одна управляющая функция, которая в процессе выполнения решит, какой http-заголовок отдать, или какие cookie будут установлены. а уж будет это функция application, main или что-то ещё - дело десятое.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version