как сделать обычные вещи в нижнем колонтитуле. html в django - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок здесь в django, я настроил макет, который содержит index.html, header.html и footer.html, в footer.html Я хочу динамически установить номер телефона, адрес электронной почты и адрес, я могу видите, я могу передать его через context из views.py, но footer.html будет включать во все шаблоны, поэтому, если я буду писать код в views.py в каждой функции, мне нужно написать его, что не очень хорошо, так что что я хочу, я хочу создать одну общую функцию и я хочу вызвать ее из footer.html, это правильный способ сделать это? или если у вас есть другие идеи, то, пожалуйста, дайте мне знать, как это сделать? здесь я добавил свой нижний колонтитул. html

views.py

def index(request):
    portal_contact_email = preferences.MyPreferences.portal_contact_email
    context = {'portal_contact_email': portal_contact_email,}
    return render(request, 'mysite/index.html', context)

нижний колонтитул. html

<footer class="bg-dark footer-section">
  <div class="section">
    <div class="container">
      <div class="row">
        <div class="col-md-4">
          <h5 class="text-light">Email</h5>
          <p class="text-white paragraph-lg font-secondary">{{ portal_contact_email }} </p>
        </div>
        <div class="col-md-4">
          <h5 class="text-light">Phone</h5>
          <p class="text-white paragraph-lg font-secondary"></p>
        </div>
        <div class="col-md-4">
          <h5 class="text-light">Address</h5>
          <p class="text-white paragraph-lg font-secondary"></p>
        </div>
      </div>
    </div>
  </div>
  <div class="border-top text-center border-dark py-5">
    <p class="mb-0 text-light">Copyright @<script>
        var CurrentYear = new Date().getFullYear()
        document.write(CurrentYear)
      </script>
{#        a theme by <a href="https://themefisher.com">themefisher.com</a>#}
    </p>
  </div>
</footer>

1 Ответ

2 голосов
/ 30 апреля 2020

Для этого вы можете создать пользовательский ContextProcessor .

Согласно документам , ContextProcessors

взять запросите объект в качестве аргумента и верните словарь элементов для объединения в контекст

Пользовательский ContextProcessor в вашем случае может выглядеть так:

def footer_data(request):
    return {'phone_number': 'xyz', ...}

Затем добавьте его в ваш settings.py, поэтому он фактически используется:

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                'myapp.my_context_processors.footer_data',
                ...

И в ваших шаблонах вы можете получить доступ к этим переменным просто с помощью {{ phone_numer }}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...