为啥django在扩展后生成空字符串?
Posted
技术标签:
【中文标题】为啥django在扩展后生成空字符串?【英文标题】:Why django generates empty string after extend?为什么django在扩展后生成空字符串? 【发布时间】:2012-03-15 15:48:58 【问题描述】:我的基本模板是
<!DOCTYPE html>
<html lang="en">
<head>
<title>% block title %My amazing site% endblock %</title>
</head>
<body>
<div id="sidebar">
% block sidebar %
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
% endblock %
</div>
<div id="content">
% block content %% endblock %
</div>
</body>
</html>
索引页面:
% extends "base.html" %
% block title %My amazing blog% endblock %
% block content %
% for entry in blog_entries %
<h2> entry.title </h2>
<p> entry.body </p>
% endfor %
% endblock %
这有什么问题,为什么会在这些引号内生成奇怪的空文本? 它正在影响我的布局。你有什么想法?谢谢。
【问题讨论】:
【参考方案1】:终于!!!我找到了造成这种情况的原因。我使用 Notepad++ 并编码为
UTF-8
但我应该编码为
不带 BOM 的 UTF-8
还是谢谢大家。
【讨论】:
【参考方案2】:使用Ctrl+U
打开的源代码看起来也很奇怪吗?也许是 Chrome 搞砸了 Elements 预览,因为我已经在 Django 1.2.3 上创建了一个视图来呈现这两个模板(并添加 2 个虚拟博客条目),并且它正确呈现为:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My amazing blog</title>
</head>
<body>
<div id="sidebar">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
</div>
<div id="content">
<h2>Test 1</h2>
<p>blah blah</p>
<h2>Test 2</h2>
<p>blah blah</p>
</div>
</body>
</html>
【讨论】:
你说得对,源代码生成正确,但 Chrome 搞砸了。当我尝试用黑色(例如)颜色渲染标题时,我在标题之前得到了很小的边距。当我在“检查元素”选项卡中删除这个空字符串时,这个边距消失了。【参考方案3】:这不可能是模板组合的结果,因为在您的“base.html”模板中,% block title % 在部分之间,但在您生成的 html 中,它在部分中。还有一个 CSS 链接,在任何一个和部分之外。我有很多这样的空字符串,这不会影响我的布局,我认为问题在于你在部分之外。
【讨论】:
【参考方案4】:注意您的标题标签已插入正文标签。也许从这里开始搜索?
【讨论】:
你确定模板 index.html 扩展了正确的 base.html 吗? 是的,只有两个文件,生成的 html 是由这两个文件组合而成的。以上是关于为啥django在扩展后生成空字符串?的主要内容,如果未能解决你的问题,请参考以下文章