@nekritik

Django: как передать одинаковые данные для разных представлений?

Извините за неинформативный заголовок, тяжело одной строкой всю суть вопроса передать.
Я недавно начал изучать Django и, что-бы отточить знания, я пытаюсь создать небольшой движок для определённой системы, ну или как теперь модно говорить: создаю веб-приложение.
Сейчас перейду к сути. У каждого пользователя есть "баланс" в системе и он должен быть постоянно виден для авторизованных пользователей, вне зависимости от того, на какой странице находится пользователь.
Во например, у нас есть 2 представления (view), назовём их к примеру buy и sell(покупка и продажа). Каждое представление выполняет определённый код , "вызывает" шаблон(template) и передаёт ему (шаблону) разнообразные данные. Мне нужно, чтобы в шаблоны в обязательном порядке попадал баланс пользователя. Как это можно сделать? Первое что приходит в голову - для каждого представления вызывать функцию, которая бы возвращала баланс.Вот примерно так:
def buy(request):
    balance = get_balance();
    return render_to_response("buy.html",{'balance':balance});
def sell(request):
    balance = get_balance();
    return render_to_response("sell.html",{'balance':balance});

Такой способ может быть вполне работоспособным, но как-то это выглядит неправильно и некрасиво. Как ешё можно решить эту проблему? В Сети я нашёл кое-что, что в теории может решить проблему - middleware но по этой теме в интернете я особо не нашёл примеров использования.

Посоветуйте, пожалуйста , как лучше решить проблему.
  • Вопрос задан
  • 445 просмотров
Решения вопроса 4
sim3x
@sim3x
Включаем мидлвару для инжекта реквеста в темплейт
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',


в темплейте запрашиваем информацию о пользователе
<h2>{{ request.user.get_ballance() }}
Ответ написан
Комментировать
Ba1t
@Ba1t
Ответ написан
Комментировать
winordie
@winordie
Лучшая документация -- исходники
Комментировать
@IvanOne
Можете написать свою middleware, и там определить логику для баланса, но это только если у вас будет использоваться везде. Если только в определенных вьюхах то лучше сделать шаблонный тег.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы