【问题标题】: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 %}

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

【问题讨论】:

    标签: django html django-templates


    【解决方案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 是由这两个文件组合而成的。
        猜你喜欢
        • 2015-07-24
        • 2021-07-12
        • 2018-05-30
        • 1970-01-01
        • 2022-11-10
        • 2021-03-22
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多