как передать значение каждому представлению с помощью промежуточного программного обеспечения django

У меня есть функция промежуточного программного обеспечения, которая переопределяет представление процесса.

Я хочу передать переменную каждому представлению. Лучше всего это сделать в параметре request, args или kwargs для view_func?

Я пробовал это без везения:

def process_view(self, request, view_func, view_args, view_kwargs):
        view_kwargs['value'] = 'my value'

        response = view_func(request, *view_args, **view_kwargs)


        return response

Как я могу передать значение каждому представлению с помощью промежуточного программного обеспечения?


person Atma    schedule 19.08.2013    source источник
comment
Если пользователь не установил настройку, я хочу показать им всплывающее сообщение. Я буду основывать это на переменной сеанса. Я подумал, что если бы переменная сеанса была истинной, я бы передал переменную в представление, чтобы перейти к шаблону. Есть ли способ лучше?   -  person Atma    schedule 20.08.2013


Ответы (1)


Бары в вашем комментарии, вы, вероятно, хотите использовать контекст процессор, чтобы ваша переменная попала в контекст шаблона.

Например, изменить

Это довольно тривиально, но вот:

def my_context_processor(request):
    if request.session['my_variable']:
        return {'foo': 'bar'}

затем вы добавляете myapp.mymodule.my_context_processor в TEMPLATE_CONTEXT_PROCESSORS в settings.py и убедитесь, что вы используете ссылку render в представлении для отображения шаблона.

person Daniel Roseman    schedule 19.08.2013
comment
следует ли мне по-прежнему использовать переопределение промежуточного программного обеспечения в сочетании с процессором контекста? - person Atma; 20.08.2013
comment
Нет, зачем тебе это нужно? У вас есть доступ к запросу, а значит и к сессии, прямо в обработчике контекста, так что вся логика может идти туда. - person Daniel Roseman; 20.08.2013
comment
можете показать пример? Я не могу найти ни одного примера того, как контекст запроса может передавать переменную в шаблон на основе условной логики. Бесконечно благодарен. - person Atma; 20.08.2013