Найти - Пользователи
Полная версия: Модификация request в middleware
Начало » Django » Модификация request в middleware
1
fth
Нужно добавить к request атрибут с определённой информацией. Решил посмотреть как это делается в SessionMiddleware, но обнаружил там следующую магию:
class SessionMiddleware(object):
def process_request(self, request):
engine = import_module(settings.SESSION_ENGINE)
session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
request.session = engine.SessionStore(session_key)
Разумеется попытка сделать по аналогии проваливается:
# middleware.py
class TestMiddleware(object):
def process_request(self, request):
request.test = 'foo'
Т.е. если во вьюхе попытаться обратиться к request.test, то получим AttributeError.

Так как работает добавление атрибута session и возможно ли сделать аналогичную мидлварю?
Разумеется можно вместо process_request использовать process_view и руками вызывать вьюху с изменённым request, но, на мой взгляд, это будет слишком костыльно.
fth
Вопрос снимается.
Вышеприведённая мидлваря отлично работает.
tier
такие вещи лучше делать через кастомный context processor, а не middleware. если надо - могу показать пример, как.
fth
tier
Вы это о чём? Я не зря к реквесту присобачиваю дополнительный атрибут, мне эти данные нужны во вьюхе, а не в шаблоне. (используется для замены стандартного User при использовании документоориентированной БД с сохранением schema-less)
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