好吧,這個完全是我的想法。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上。不幸的是,有很多東西可能會導致不同(不同的中間件,甚至不同的模板加載器等等)。 –