как передать переменную из включенного шаблона в шаблон, где она включена? - PullRequest
0 голосов
/ 04 апреля 2011

In Django Просмотров: -

if request.is_ajax():
    t = get_template('bar-templates.html')
    html = t.render(Context({'edit': True, 'user':'some-user' }))
    return HttpResponse(html)

Есть два шаблона: Основной шаблон (foo-templates.html), который включает в себя шаблон (bar-templates.html). В контексте edit и user передаются в bar-templates.html Но эта переменная также используется в foo-templates.html. В django мы использовали {{ edit }}, чтобы поймать переменную. Поскольку эта переменная входит в bar-templates.html. Как я могу использовать это для foo-templates.html.

Foo-templates.html:

{% extends "base.html" %}

<div class="container">
{{ edit }} // Here I am not getting the edit value
    {% if edit %} // I need this edit value. But this value is in context with `bar-templates.html`
     do something 
    {% else %}
     do something
    {% endif %}
    <div class="content">
       {% include "bar-templates.html" %}
    </div>

бар-templaes.html

{{edit}} // Здесь это дает мне значение редактирования Это шаблоны, которые я отправляю из просмотров.

Как использовать значения переменной included template в шаблоне, куда он включается.

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Используя детали из вашего другого поста, который вы должны отредактировать, чтобы включить в этот:

Из того, что я могу сказать, вы пытаетесь добавить «выбранный» класс в меню боковой панели. Это не сработает для вас, потому что, как сказал gcbirzan, вы не сможете получить контекст своего ответа ajax в свой базовый шаблон. Кроме того, вы не собираетесь повторно визуализировать базовый шаблон, чтобы он не изменился в любом случае.

Используя javascript, вы можете извлечь foo_id из вашего part.html. Так как этот код не отображается, допустим, у вас есть foo_id в скрытом div, <div id="foo_id" style="display:none;">foo_2</div>

Теперь вы можете изменить свою функцию ajax на что-то вроде этого:

$.ajax({
    type:'GET',
    cache: 'false',
    url:"/foobar/",
    success:function(data) {
        $('#main-content').html(data);
        var $foo_id = $('#foo_id').val();
        $('#foo1>ul>li.selected').removeClass('selected');
        $('#'+ foo_id).addClass('selected');
    }

});
0 голосов
/ 04 апреля 2011

Если вы просто визуализируете foo:

t = get_template('foo-templates.html')
html = t.render(Context({'edit': True, 'user':'some-user' }))

, тогда 'foo' и включенный 'bar' имеют одинаковое значение для 'edit'.

Я не совсем понимаю ваш вопрос, но ответил ли я на него?

...