为什么django在扩展后会生成空字符串?

时间:2012-02-25 11:23:03

标签: django html5 django-templates

我的基本模板是

<!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 %}

这有什么问题以及为什么它会在这些引号内生成奇怪的空文本? 它正在影响我的布局。你有什么想法?感谢。

enter image description here

4 个答案:

答案 0 :(得分:3)

最后!!!我找到了导致这种情况的原因。我使用Notepad ++并编码为

  

UTF-8

但我应该编码为

  

没有BOM的UTF-8

无论如何,谢谢大家。

答案 1 :(得分:1)

使用Ctrl+U打开的源是否也看起来很奇怪?也许Chrome正在弄乱元素预览,因为我在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> 

答案 2 :(得分:0)

<注意将标题标签插入到body标签中。也许从这里开始搜索?

答案 3 :(得分:-1)

这不能归结为模板的结果,因为在“base.html”模板中,{%block title%}位于部分之间,但在生成的html中,它位于部分中。而且还有一个CSS链接,在外面和部分之外。我有很多这样的空字符串,这不会影响我的布局,我认为问题在于你的部分是在外面。