Отправить контекст в базовый шаблон с помощью django шаблонов - PullRequest
0 голосов
/ 23 февраля 2020

Привет, у меня есть (базовый шаблон), и мне нужно отобразить все разделы в раскрывающемся списке, так как я могу отправить контекст с объектами Разделов, чтобы отобразить их в течение l oop?

<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
     {% for sec in Sections %}
     <a class="dropdown-item" href="#">{{sec.section_name}}</a>
     {% endfor %}
</div>

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

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

  1. В каталоге приложения создайте файл context_processors.py. В нем добавьте свою переменную в контекст ... что-то вроде:
from yourapp.models import Sections

def sections_to_base(request):    
    sections = Sections.objects.all()    
    return {'sections': sections}
Добавьте путь к процессору в настройках вашего проекта. Например:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join( BASE_DIR, 'templates' )],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages', 

                'myapp.context_processors.sections_to_base', # <-- this
            ],
        },
    },
]
В base.html, так же, как вы интерполировали:
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
     {% for sec in sections %}
     <a class="dropdown-item" href="#">{{sec.section_name}}</a>
     {% endfor %}
</div>
1 голос
/ 23 февраля 2020

если я вас четко понимаю, попробуйте это

<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
     <li>
     {% for sec in Sections %}
       <ul><a class="dropdown-item" href="#">{{sec.section_name}}</a></ul>
     {% endfor %}
     </li>
</div>
...