无法扩展基本模板Django

时间:2019-01-21 06:23:00

标签: django django-templates django-views

我用以下内容创建了一个base.html。 yarnMMS / templates / my / base.html

{% load staticfiles %}
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Yarn Management System</title>
</head>
<body>
<div class="content-page">

        <!-- Start content -->

        {% block content %}
        {% endblock  %}
        <!-- END content -->

    </div>
</body>
</html>

现在我正在尝试扩展base.html。 yarnMMS / templates / my / content.html

{% extends 'my/base.html' %}
{% block content %}
 <h1>Content Block</h1>
{% endblock %}

但是我没有得到要求的结果。所以请指出错误。

这是我的settings.py,其中添加了模板目录。

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

2 个答案:

答案 0 :(得分:2)

要在应用程序内部扩展和继承模板,您需要将其名称提供给标记。

这应该有效:

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

如果它位于项目的templates目录中的另一个文件夹中,只需提供文件夹名称:

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

答案 1 :(得分:0)

您可以在settings.py中的部分中添加标记为TEMPLATES的问题。但是请检查以下内容,这可能是问题所在。

确保在settings.py设置的TEMPLATES模块中存在以下行:

...
TEMPLATES = [
             ...
             'DIRS': [
                 os.path.join(BASE_DIR, 'templates'),
             ],
             ...
]
...

这告诉django在该目录中查找模板,在本例中为项目基本目录templates中的BASE_DIR目录,您可以添加任意数量的模板,只需确保将其添加到DIRS设置并指定磁盘上的位置,然后在模板中调用它们!