@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. простите за портянку, думал так нагляднее будет. Заранее спасибо.
  • Вопрос задан
  • 1616 просмотров
Пригласить эксперта
Ответы на вопрос 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, но джанго шаблонизатор загибается по производительности если много инклюдов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы