@sazhyk

Почему не подключаются блоки в Django?

Помогите решить проблему. Не работают шаблоны в джанге.
Структура проекта:
---project
   |--project
   |  |--settings.py
   |  |--urls.py
   |--app1
   |  |--static
   |  |  |--css
   |  |  |  |--style.css
   |  |--templates
   |  |  |--left.html
   |  |  |--right.html
   |  |--urls.py
   |  |--models.py
   |  |--views.py
   |--temlpates
   |  |--index.html
   |--manage.py

settings.py
...
INSTALLED_APPS = [
    ...
    'app1',
    ...
...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            'templates',
            'app1/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',
            ],
        },
    },
]
...
STATIC_URL = '/static/'

views.py
from django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html')

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="main">
    {% block left %}{% endblock %}
    {% block right %}{% endblock %}
</div>
</body>
</html>

left.html
{% extends 'index.html' %}

{% block left %}
    <p>Абра-кадабра!</p>
{% endblock %}

right.html
{% extends 'index.html' %}

{% block right %}
    <p>Сим-селявим!</p>
{% endblock %}

В итоге на выходе в браузере получаю:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="main">
    
</div>
</body>
</html>

То есть, содержимое индекса без блоков лефт и райт. Сервер джанговский. В консоли всё в порядке. Стили из папки static подгружаются. Пробовал переносить left.html и right.html в папку project/temlpates и в project/app1/templates - безрезультатно. Что я делаю не так? Не могу понять? Возможно неверно истолковал руководство по шаблонам?
PS. простите за портянку, думал так нагляднее будет. Заранее спасибо.
  • Вопрос задан
  • 1662 просмотра
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
def left(request):
    return render_to_response('left.html')


{% extends 'index.html' %}

{% block left %}
    <p>Абра-кадабра!</p>
{% endblock %}

{% block right %}
    <p>Сим-селявим!</p>
{% endblock %}
Ответ написан
Если ты хочешь видеть блоки - задай их в файле индекс внутри блоков.
Шаблоны работают немного по-другому. В случае с extend - они зашевеляться, если на них ссылается урл джанго, тогда шаблон ищет родителя в указанном extend и вставляет блоки.
Можна пробовать include, но джанго шаблонизатор загибается по производительности если много инклюдов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы