从项目根Django扩展模板

时间:2017-10-09 07:37:39

标签: django python-3.x django-templates

在我的根文件夹中,我有一个模板文件夹,里面有一个base.html文件。我有一个带有一些HTML的应用程序,我希望它扩展base.html。

这里是base.html中的代码:

<header><h3>Header here</h3></header>
    {% block content %}
    {% endblock %}
<footer><h3>Footer here</h3></footer>

应用内的代码是:

{% extends base.html %}
{% block content %}
<h1>{{ question.question_text }}</h1>
<ul>
    {% for choice in question.choice_set.all %}
    <li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{    choice.votes|pluralize }}</li>
{% endfor %}
</ul>

<a href="{% url 'polls:detail' question.id %}">Vote again?</a>
{% endblock %}

出于某种原因,我在&#39;扩展&#39;中获得了无效的模板名称。标签错误,我不知道为什么。

我已经通过在线搜索将我的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',
            ],
        },
    },
]

1 个答案:

答案 0 :(得分:4)

文件名应带引号

{% extends "base.html" %}

{% block content %}
{% 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',
            ],
        },
    },
]