Задать вопрос
@Albadur

Как передать переменную в базовый шаблон?

Есть много страниц на сайте, все они наследуются от одной базовой.
Надо передать переменную в базовый шаблон, чтобы для каждой страницы не прописывать эти переменные.
Судя по документации Django это можно сделать с помощью RequestContext.
Этот код из документации отлично работает
from django.http import HttpResponse
from django.template import RequestContext, Template

def ip_address_processor(request):
    return {'ip_address': request.META['REMOTE_ADDR']}

def client_ip_view(request):
    template = Template('{{ title }}: {{ ip_address }}')
    context = RequestContext(request, {
        'title': 'Your IP Address',
    })
    return HttpResponse(template.render(context))


При попытке подключения файла html начинается проблема
def home(request):
    template = get_template('home/home.html')
    context = RequestContext(request, {
        'title': 'Your IP Address',
    })
    return HttpResponse(template.render(context))


Выдается ошибка: TypeError: context must be a dict rather than RequestContext.
Прошу помогите. Заранее очень вам благодарен.

Ответ: RequestContext совсем не нужен. Надо прописать контекстный процессор, указать его в settings.

def custom_proc(request):
    "A context processor that provides 'app', 'user' and 'ip_address'."
    param = request.session.get('Param')
    data = {"param":param}
    return data


В процессорах Templates вставил name_of_folder.name_of_file.custom_proc
  • Вопрос задан
  • 1322 просмотра
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Скорее всего вам нужен контекстный процессор.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы