Невозможно отобразить содержимое {% block content%} {% endblock%} в Django - PullRequest
0 голосов
/ 07 октября 2019

Я не могу отобразить содержимое {% block content%} {% endblock%} на моей веб-странице.

Вот древовидная структура:

  • toolbox /
    • Панель инструментов /
      • Лиза /
        • Шаблоны /
          • Лиза /
            • lisa.html
      • шаблоны /
        • base.html

Вот код base.html:

{% load static %}
<!DOCTYPE html>
<html lang="fr">
<head>
</head>
<body>
    <section id="main-content">
        {% block content %}{% endblock %}
    </section>
</body>
</html>

А вот код lisa.html:

{% extends 'templates/base.html' %}

{% block content %}
    <h2>Bienvenue !</h2>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rhoncus 
        massa non tortor. Vestibulum diam diam, posuere in viverra in, 
        ullamcorper et libero. Donec eget libero quis risus congue imperdiet ac 
        id lectus. Nam euismod cursus arcu, et consequat libero ullamcorper sit 
        amet.
    </p>
{% endblock %}

Вы знаете, откуда он мог взяться?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

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

toolbox
├── lisa
│   ├── templates
|   |   └── lisa
│   │       └── lisa.html
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── templates
│   └── base.html
├── toolbox
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

В ваших settings.py:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': ['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',
        ],
    },
},

]

  1. Я предполагаю, что вваш settings.py вы установили каталог шаблонов как templates.
  2. В lisa.html просто напишите {% extends 'base.html' %}. Делая это, Django ищет templates/base.html, который существует, следовательно, он должен работать.
  3. Причина, по которой ваш код не работает, заключается в том, что когда вы пишете {% extends 'templates/base.html' %}, Django ищет templates/templates/base.html, который на самом деле не работает. существует.
0 голосов
/ 07 октября 2019

@ Прияншу Гупта Спасибо за ваш ответ, взгляд на мою древовидную структуру похож на тот, который вы мне дали. Итак, вот часть «шаблона», которая есть в моем файле «setting.py»:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            # Cette ligne ajoute le dossier templates/ à la racine du projet
            os.path.join(BASE_DIR, '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',
            ],
        },
    },
]
0 голосов
/ 07 октября 2019

Попробуйте изменить:

{% extends 'templates/base.html' %}

Кому:

{% extends 'base.html' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...