Django, какой шаблон для расширения с помощью блока if

#python #django #django-templates

Вопрос:

У меня есть два разных шаблона, которые должны быть расширены на трех разных страницах. Есть ли решение для расширения шаблона if block ? Я пробовал это без успеха.

 {% if 'project' in request.get_full_path %}
  {% extends 'index.html' %}

{% elif 'network' in request.get_full_path %}
  {% extends 'base.html' %}

{% elif 'zoneset' in request.get_full_path %}
  {% extends 'base.html' %}

{% endif %}

{% load crispy_forms_tags %}

{% block title %} Network {% endblock title %}

{% block content %}

<div class="row">
  <div class="col-md">
    <div class="card card-body">
      <h6>Update</h6>
      <form class="" action="" method="post" enctype="multipart/form-data">
        {% csrf_token %}
          {{form|crispy}}
        <input type="submit" name="" value="Update">
      </form>
    </div>
  </div>
</div>
{% endblock %}
 

Ответ №1:

Если вы работаете с наследованием шаблонов, {% extends … %} [Django-doc] должен быть первым тегом шаблона. Вы не можете использовать {% if … %} блок, и не рекомендуется определять родительский элемент на основе полного пути запроса.

Вы можете сделать это в представлении и работать с:

 def my_view(request):
    context = { 'parent': 'index.html' }
    return render(request, 'my_template.html', context) 

и затем в шаблоне используйте:

 {% extends parent %}
… 

Комментарии:

1. Как я могу включить другой шаблон base.html ?

2. @aba2s: вы отображаете его в другом контексте, так { 'parent': 'base.html' } что ).