Шаблон Django расширяется: дети не переопределяют родителей - PullRequest
0 голосов
/ 02 февраля 2019

Я запускаю python manage.py runserver, и он отображает только родительский элемент - base.html .Согласно документации , родительский шаблон должен переопределять дочерний шаблон:

Наследование шаблонов позволяет создавать базовый «каркасный» шаблон, который содержит все общие элементываш сайт и определяет блоки, которые дочерние шаблоны могут переопределять.

base.html и base_child.html находятся в одной папке: MyProject / MyApp / Templates/

views.py

def baseview(request):
    return render(request,'base.html')

Вот мои шаблоны:

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>
        {% block titleblock %}
        Hello World Title
        {% endblock %}
    </title>
</head>
<body>
    <p>
        {% block bodyblock %}
        Hello World!
        {% endblock %}
    </p>

</body>
</html>

base_child.html

{% extends "base.html" %}

{% block titleblock %}
Hello Grass title
{% endblock %}

{% block bodyblock %}
Hello Grass!
{% endblock %}

Я считаю, что ответы и комментарии для этого вопроса неясны в описании, поэтому я и задаю этот вопрос.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Оба шаблона должны отображаться с другим представлением и URL-адресом следующим образом:

urls.py для базы:

url(r'base/$', views.baseview),

views.py для базы:

def baseview(request):
   return render(request,'base.html')

urls.py для ребенка:

url(r'child/$', views.childview),

views.py для ребенка:

def childview(request):
   return render(request,'base_child.html') 

Теперь, когда вы набираете

localhost:8000/base/

в URL вашего браузера будет отображаться база title

, а если вы наберете

localhost:8000/child/

в URL вашего браузера, он будет переопределять базу title с ребенком title

0 голосов
/ 02 февраля 2019

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

def baseview(request):
   return render(request,'base.html')

Когда вы визуализируете шаблон base_child, он переопределяет родительский шаблон.

def baseview(request):
    return render(request,'child_base.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...