Как вставить несколько блоков в базу. html в Django? - PullRequest
1 голос
/ 24 апреля 2020

Возможно, я неправильно понимаю наследование шаблонов в Django, но почему не работает приведенный ниже код? Оба дочерних шаблона наследуются от родительского шаблона с разными именами блоков.

base. html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>test</h1>

{% block index %}{% endblock %}
{% block nav %}{% endblock %}
</body>
</html>

index. html

{% extends 'blog/base.html' %}
{% block index %}
<h1>This is the index.html page</h1>
{% endblock %}

навигация. html

{% extends 'blog/base.html' %}
{% block nav %}
<h1>This is the nav.html</h1>
{% endblock %}

Я открываю этот шаблон по: urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls'))
]

blog / urls.py:

urlpatterns = [
    path('', views.home, name='home'),
    path('nav/', views.home, name='nav')
]

blog / views.py

def home(request):
    return render(request, 'blog/index.html')

Использование URL из:

localhost:8000/blog

HTML Вывод:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>test</h1>


<h1>This is the index.html page</h1>


</body>
</html>

Я пытаюсь использовать asp концепцию использования нескольких блоков, чтобы я мог разместите их на нужных мне шаблонах.

1 Ответ

1 голос
/ 24 апреля 2020

Невозможно отобразить два представления в одном HTTP-запросе. Чтобы включить контент из другого шаблона, просто используйте include для nav.html, если он не будет вызываться независимо.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>test</h1>
{% include 'nav.html' %}
{% block index %}{% endblock %}
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...