【问题标题】:django templating system inheritance issuedjango模板系统继承问题
【发布时间】:2010-04-17 14:22:20
【问题描述】:

我的 django 模板系统有问题,我有一个 base.html 文件,其中包含网站所有网页上通用的内容,base.html 文件获取一些动态内容,例如类别和档案,由 python 文件传递​​给它,该文件从 mysql 数据库中获取类别和档案数据。

当我在 index.html 等其他 html 文件中继承这个 base.html 文件时的问题:

{% 扩展“base.html” %}

当我调用 ex 的主索引 URL 时:http://mywebsite.com/index/

索引页面已加载,但应从 base.html 文件加载的类别和档案数据未加载。

我做错了什么,请帮忙。

【问题讨论】:

  • base.html 文件如何获取动态内容?使用模板标签?还是在渲染模板时作为上下文传入?
  • 更多信息,例如提供重现问题的示例 base.html 和 derived.html。进一步:如果看源码,是不是漏掉了base.html的数据或者整个html结构?
  • 我将从我的 base.html 文件中提供一个小代码:{% if categories %}

    Categories

  • 最初创建的 {% categories %} 变量在哪里?
  • 然后作为上下文传递给模板?你能把代码粘贴到你的views.py中吗?

标签: python django inheritance templates


【解决方案1】:

您很可能遇到以下一个(或两个)问题:

  1. base.html 中的块被 index.html 中的块覆盖,而您尚未使用 {{block.super}} 包含基本模板中的内容。

  2. 调用 index.html 的视图函数没有创建适当的上下文变量来为模板提供所需的数据。

【讨论】:

  • 不,这没有帮助,问题是,我在上面发布的代码下面有一个简单的行 mywebsite.com/media/cellpassion/images/adv-sony.jpg" /> mywebsite.com/media/cellpassion/images/adv-LG.jpg" /> 这两行都在 base.html 文件中,它们正在被加载,但上面的代码是应该加载类别的数据,没有被加载。我真的很累,试图解决过去两天的问题。
  • Suhail,那么您将不得不发布更多代码。问题可能很简单,但我们没有足够的信息。
  • 我能把python和html文件邮寄给你吗?
  • 你不在这里粘贴代码有什么原因吗?如果它太大,那么也许你无论如何都需要减少它。
【解决方案2】:

由于这是一个老问题,现在可能已经解决了,但我发现 Django 1.1 的一个问题是模板继承在某些情况下似乎不起作用。

我的应用名为“预算”。模板位于 PROJECTROOT/budget/templates/budget,我已将模板目录定义为 PROJECTROOT/budget/templates。

在模板/预算目录中,我有 base.html 和 index.html。 index.html 通过 'extends "budget/base.html"' 扩展 base.html。

当我点击索引 url 时,index.html 模板呈现而不从 base.html 继承。当我将 index.html 的命名更改为 budget_index.html 时,一切正常。

我希望这对某人有所帮助,因为我已经为此苦恼了几个小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多