Найти - Пользователи
Полная версия: Werkzeug: установить cookie
Начало » Web » Werkzeug: установить cookie
1 2
o7412369815963
poltergeist
o7412369815963 В werkzeug есть очень-очень-очень много вкусного, о котором вы видимо и не задумывались пока, или вам это просто не нужно.
например, что такое значимое есть из-за чего можно мигрировать?
пока я увидел один плюс - сессии, походу работаю через алхимию, а я чаще использую монго, т.е. для меня не плюс.
а все остальное и тут есть.
poltergeist
o7412369815963 Ну значит пока не надо мигрировать;)
А вообще в werkzeug есть очень подробный Request класс, описывающий всевозможные заголовки запроса (не сырые заголовки, а уже проанализированные и адаптированные для использования в питоне). Есть отличная дебаг-страница (лучшая наверное из всех). Есть очень гибкий и красивый диспатчер урлов. Встроенные средства для создания thread local (или иначе говоря request local) объектов. Есть начальный функционал для кэширования данных. Есть сессии, signed cookies и прочее прочее… И ещё это не фреймворк, это просто очень классная и гибкая библиотека для создания реальных проектов. И там нет ничего лишнего, только то, что действительно нужно.
axe
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, которая генерит контент. Это сильно ошибочный подход?
poltergeist
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-ом сами думайте. Советую строить приложение хотя бы приблизительно так, как в документации описано, говорю это не просто так, а по опыту работы над реально не маленьким проектом.
axe
poltergeist
Если вам нужен простой доступ к request-у как к глобальному объекту из любой точки проекта
он у меня и так есть:
axe
response = Response(main( Request(environ) ))
poltergeist
Что делать с response-ом сами думайте
что с ним можно делать вне функции main? ничего. по сути, я про это и спрашивал.
мне нужна одна управляющая функция, которая в процессе выполнения решит, какой http-заголовок отдать, или какие cookie будут установлены. а уж будет это функция application, main или что-то ещё - дело десятое.
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