好的,这个完全是我的想法。
我有一个非常简单的_base.html,其代码如下:
<!DOCTYPE html />
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
{% load static %}
<title>Welcome!</title>
<!-- Includes jQuery UI -->
<script type='application/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'></script>
<script type='application/javascript' src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js'></script>
<link rel='stylesheet' href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/cupertino/jquery-ui.css' type='text/css' media='screen' />
<!-- Includes Columnal -->
<link rel='stylesheet' href='{% get_static_prefix %}Columnal/columnal.css' type='text/css' media='screen' />
<!-- Custom CSS -->
<link rel='stylesheet' type='text/css' href='{% get_static_prefix %}Style.css' />
{% block head %}
{% endblock %}
</head>
<body>
<header>
<table width='100%'>
<tr>
{% if user.is_authenticated %}
<td>Welcome, {{user.username}}!</td>
<td align='right'><a href='logout/'>Logout</a></td>
{% else %}
<td><a href='login/'>Login / Register</a></td>
{% endif %}
</tr>
</table>
</header>
{% block content %}
{% endblock %}
</body>
</html>
当然,虽然打算通过子模板进行扩展,但这个页面本身确实有意义,实际上,在渲染时,我会看到我期望的和我想要的东西。
但是,当我尝试使用子模板扩展此文件时,我得到了一些意想不到的结果,所以我尝试将其降低到绝对最低限度,即:
{% extends '_base.html' %}
只需一行代码。有人会认为,如果我显示这个文件,我会得到完全相同的结果,如果我只是显示_base.html本身。但是,并非如此。出于某种原因,当我使用这个简单的子模板时,在标题上方有一条额外的白线虚无。甚至更奇怪的是,如果我选择两个页面的查看源(即,我直接从_base.html获得的页面和我从子模板获得的页面),它说源代码完全是相同的(我是使用Chrome)。如何显示同一页面的两个文件提供相同的确切源代码(根据浏览器),但显示不同。
这完全打击了我的脑海,我不知道是什么原因造成的。我理解它的方式,Django在幕后做了这件事并向浏览器提供原始HTML文件,因此浏览器不应该关心我如何生成HTML,只要它是相同的。那么这两种方法怎么会产生不同的结果呢?任何帮助都会非常感激,因为我在过去两天一直坚持这一点。
P.S。:很抱歉_base.html的代码对论坛帖子来说有点长。我可能已经切断了一点,但由于我不知道这里发生了什么,我真的不知道什么是重要的,什么不重要,所以我不想承担风险。
编辑:正如我之前提到的,(在Chrome中)如果我右键单击并为两个页面选择“查看页面源”,我会得到完全相同的源代码。但是,如果我选择'Inspect element',源代码就不一样了。出于某种原因,当使用子模板版本通过“Inspect element”查看源代码时,我发现_base.html的<head>
标记中的所有内容都位于源代码的<body>
标记中我看到的代码。知道为什么会这样吗?
答案 0 :(得分:0)
您是否在settings.py的TEMPLATE_DIRS中指定了模板目录的正确路径。 ?
您是否也尝试查看清除所有浏览数据(Cookie,缓存等)的页面?
可能是浏览器在幕后缓存数据..