好吧,这个完全是我的想法。Django模板继承
我有一个非常简单的_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)。它是如何显示相同页面的两个文件给出相同的确切源代码(根据浏览器),但是DISPLAY DIFFERENTLY。
这完全打击了我的想法,我不知道可能是什么原因造成的。按照我的理解,Django在幕后做了这件事,并为浏览器提供了一个原始HTML文件,以便浏览器不必关心我如何生成HTML,只要它是相同的。那么这两种方法怎么会产生不同的结果呢?任何帮助都将非常感谢,因为我在过去两天一直坚持这一点。
P.S .:对不起,_base.html的代码对于论坛帖子有点长。我可能会稍微砍掉一点,但由于我不知道这里发生了什么事情,所以我不知道什么是重要的,什么不重要,所以我不想冒险。
编辑:正如我前面提到的,(在Chrome中)如果我右键单击并为这两个页面选择“查看页面源代码”,我会得到完全相同的源代码。但是,如果我选择“检查元素”,则源代码不一样。出于某种原因,当使用子模板版本通过“检查元素”查看源代码时,我发现_base.html的<head>
标记中的所有内容位于我看到的源代码的<body>
标记中。任何想法为什么会发生?
对不起,我不能使用您提供的代码重现此问题;似乎还有其他事情正在进行中。 –
@Zach Snow:偶然,你使用的操作系统是什么?我在Windows上。 。 。这可能会有所作为吗? –
不知道这是否会有所作为;我自己在OS X上。不幸的是,有很多东西可能会导致不同(不同的中间件,甚至不同的模板加载器等等)。 –