我的模板无法正确扩展到' base.html'

时间:2016-04-03 14:26:27

标签: python django templates inheritance

我正在使用模板系统开发我网站的不同页面。我有一个' base.html'这是基本模板,其中有静态(没有{%blocks%})我所有网站页面中的常用功能,如标题和导航菜单。

我正在对其进行一些更改,例如将标题上的文字引入“登录”状态。和'注销',还在菜单元素上创建链接。

当我转到其他模板(扩展' base.html')时,它会很好地加载它,但是例如那些' login'顶部div上的新功能以及菜单上的链接都没有显示。如果模板扩展到' base.html'?我将向您展示一些代码:

' base.html文件'有这个代码:

<body>

<header>
<div class="topbox">
    <!-- <img src="static/mysite/g5794.png" alt="Logo" height="180" width="1400"> -->
</div>
<div id="auth">
    {% if user.is_authenticated %}
        <p>Bienvenido, <b>{{ user.username }}  |  <a href=" {% url "logout" %}">Logout</a></b></p>
    {% else %}
        <p>Bienvenido, por favor <a href="{% url "login" %}">loguéate</a></p>
    {% endif %}
</div>
<p>MAIN PAGE MAIN TOP PAGE</p>
</header>

<nav>
    <div class="menu">
        <p><a href="{% url "index_view" %}">HOME</a> | <a href="{% url "list_index" %}">LIST</a> | <a href="">ELSE</a> | <a href="">BLOG</a></p>
    </div>
</nav>

{% block content1 %}

我提到的功能不适用于扩展&base.html&#39;的任何其他模板。例如,&#39; login.html&#39;目前,模板看起来像这样:

{% extends "base.html" %}
{% load staticfiles %}
{% load static from staticfiles %}
{% load i18n %}
{% block title %}{% trans "LOGIN" %}{% endblock %}
{% include "base.html" %}

{% block content1 %}
{% block style_base %}
<link href="{% static 'css/styles.css' %}" rel="stylesheet">
{% endblock %}
    <div style="text-align:center">
    <h1>login</h1>
    {% if message %}
    <b>{{message}}</b>
    {% endif %}
    <form action="" method="post">{% csrf_token %}
        {{form.as_p}}
    <input type="submit" value="Submit" />
</form>
{% endblock %}

页面顶部的所有模板标签稍微需要继承&#39; base.html&#39; (如果没有那么多代码,就无法找到扩展到这些样式的方法)。它正确加载顶部的div,但它没有显示我提到的内容(标题中的新登录/注销行和导航菜单中的链接)。对于&#39; list_index&#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',
                'django.template.context_processors.media'
            ],
        },
    },
]

还尝试使用&#39; DIRS&#39;:[]。唯一显示一切正常的页面是索引页面(base.html页面)。其他模板会发生什么?谢谢。

1 个答案:

答案 0 :(得分:0)

在base.html中

我只看到{%block content1%},看不到{%endblock content1%}}。