【问题标题】:Django Template inheritance causes a bus errorDjango模板继承导致总线错误
【发布时间】:2012-08-07 16:02:42
【问题描述】:

我在 Django 模板中的多站点层次结构中工作,因此我需要一个主基本模板 (base/base.html),我有几个从中扩展的主模板,例如 base/base_twocol.html。然后我有从这些模板扩展而来的模板,例如base/base_twocol_SECTION

然后我需要有相同的模板集,它将处理另一个站点,但从这些模板扩展而来,例如another_site/base.htmlanother_site/base_twocol.htmlanother_site/base_twocol_SECTION.html

我们的目标是拥有一组可以为每个站点覆盖的主模板。

所以我有这样的事情:

templates/
    base/
        base.html 
        base_twocol.html           //extends base.html
        base_twocol_SECTION.html   // extends base_twocol.html
    another_site/
        base.html                  //extends base/base.html
        base_twocol.html           //extends base/base_twocol.html
        base_twocol_SECTION.html   //extends base/base_twocol_SECTION.html
    super_cool_site/
        base.html                  //extends base/base.html
        base_twocol.html           //extends base/base_twocol.html
        base_twocol_SECTION.html   //extends base/base_twocol_SECTION.html

我创建了我的another_site/base.html,并使用了{% extends "base.html" %}语法

但是,当我运行服务器时,我从浏览器收到“未收到数据错误”,从控制台收到“总线错误”。

【问题讨论】:

  • 我们可以看到完整的堆栈跟踪吗?

标签: html django django-templates template-inheritance


【解决方案1】:

文件的命名表明了总线错误,因为有两个同名模板,其中一个试图从另一个扩展。

another_site/base.html中,我有{% extends "base.html" %},但这个文件也叫base.html

所以基本上,我不能有一个名为 X 的模板,以及另一个名为 X 的模板 X,它扩展了模板 X。也许我的问题措辞不太正确,这就是为什么没有被采纳。

子模板需要有一个唯一的名称。我对所有模板文件都这样做了,现在它工作正常。

【讨论】:

  • 在我看来,这是因为在开发自定义存储(现已修复)时错误使用了 getattrsetattr。只是说它可能与文件名循环无关,而是一些新的错误本身
  • 我遇到了同样的问题 - 由于拼写错误,出现了无限的“扩展”循环。
【解决方案2】:

来自django-users 组中的线程:

由于未对齐的内存访问或访问非 存在的内存地址。在没有实际错误的情况下(其他人 会看到),这清楚地表明 C 中的一个或另一个 python使用的库与之冲突。

如果您编译了一个 C 库以与 python 一起使用,则可能会发生这种情况,例如 由一个小型 C 库组成的众多 python 包之一 (mysql 和 postgresql DB 适配器、PIL 等),并将其与 与编译时不同的 python。

这几乎肯定与您的模板继承无关。检查您的 Python 和 Django 安装,必要时重新安装。还请提供有关您的环境的更多详细信息,以及如 Jonas 所说的完整堆栈跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多