2015-01-07 3 views
1

Я создал 2 navbars один для блога и один для основного приложения. Я использую тег include, чтобы ввести navbar в шаблоны. «extends base.html» также используется, однако navbar не включен в базовый файл, и, как упоминалось выше, вводится как тег include.django navbar template - tags

В главном приложении, которое должно отображать один и тот же навигатор (содержимое) для всех страниц приложения, не делает этого, и я получаю только желаемый результат на главной странице.

Переменные контекста, используемые на навигационной панели, относятся к функции просмотра домашней страницы, и когда страница главной страницы отображается, она отлично работает, но когда я открываю любые внутренние страницы того же приложения, навигационная панель не отображает содержимое.

Я предполагаю, что navbar будет пытаться загружать контекстные переменные функции просмотра только активной (только что открывшейся) страницы html и поэтому контекстные переменные главной страницы не работают ни на одной другой странице, даже если navbar является отдельным html-файлом.

Если это правильно, я хотел бы знать, как обойти его, так как все страницы основного приложения должны показывать одинаковые значения навигатора.

home.html - This is how base and navbar are introduced in the template. 
{% extends 'base.html' %} 

{% block title %}Title{% endblock title %} 
{% block navbar %}{% include 'navbar.html' %}{% endblock navbar%} 

Аналогичным образом на остальных страницах представлены как базовые, так и навигационные.

Все контекстные переменные, используемые в navbar {% для страны в странах%}, например, относятся к функции просмотра для главной страницы.

Когда я использую тот же навигатор, что и «о нас», навигационная панель не отображает требуемую информацию.

Помогло ли это?

+0

Можете ли вы показать нам какой-то код, чтобы сделать вашу проблему более понятной? –

+0

@MaximeLorant У меня есть код, но не слишком много, чтобы избежать дальнейших путаниц. Надеюсь это поможет. Дайте мне знать, если вам нужна дополнительная информация. – Uma

+0

укажите, где вы хотите отобразить навигационную панель. – Gaurav

ответ

1

простой способ вы можете сделать

in base.html 

    {% block content %} 
    {% endblock %} 

    in navbar2.html file 
    all html code 


in navbar2.html file 
     all html code 



    other1.html file 
    {% extends 'base.html'%} 

    {% blck content %} 
    {% include 'navbar1.html' %} 


    All html code here 
    {% endblock %} 

other2.html file 
     {% extends 'base.html'%} 
     {% blck content %} 

     {% include 'navbar1.html' %} 

     All html code here 
     {% endblock %} 

если вы хотите отправить контекстные переменные для всех файлов, то создать представление, которое будет оказывать на base.html и передать, что переменные контекста для base.html. Поскольку base.html расширяется в каждом шаблоне, вы получите доступ к этим переменным контекста во всех шаблонах

+0

Base - это простой html-файл, который не использует переменные контекста, в то время как navbar делает. Я понимаю, что я могу сделать это проще, добавив navbar в базовый файл. Причина, по которой я этого не делаю, заключается в том, что у меня есть другой навигатор для использования в моем приложении для блога, а другой - в моем основном приложении. Тем не менее, это не моя проблема, я хочу иметь возможность использовать контекстные переменные из одной функции просмотра на всех страницах html. Даже если бы я добавил navbar к базе, мне все равно понадобилось бы использовать переменные контекста. – Uma

+0

Проверьте измененный ответ. – Gaurav

+1

Вам следует подумать о том, чтобы очистить свой ответ ... это немного беспорядок, и некоторые из имен файлов ошибочны –