【问题标题】:django navbar template - tagsdjango 导航栏模板 - 标签
【发布时间】:2015-03-05 00:54:24
【问题描述】:

我创建了 2 个导航栏,一个用于博客,一个用于主应用程序。我使用包含标签将导航栏引入模板。也使用了“extends base.html”,但是导航栏不包含在基本文件中,如上所述作为包含标签引入。

在应该为应用程序的所有页面呈现相同导航栏(内容)的主应用程序中没有这样做,我只在主页上收到所需的结果。

导航栏上使用的上下文变量来自主页视图功能,当主页页面呈现时,它可以完美运行,但是当我打开同一应用程序的任何内部页面时,导航栏不会显示任何内容。

我认为导航栏只会尝试加载活动(当前打开的)html页面的视图函数的上下文变量,因此主页上下文变量在任何其他页面上都不起作用,即使导航栏是一个单独的html文件。

如果这是正确的,我想知道如何绕过它,因为主应用程序上的所有页面都应该显示相同的导航栏值。

home.html - This is how base and navbar are introduced in the template. 
{% extends 'base.html' %}

{% block title %}Title{% endblock title %}
{% block navbar %}{% include 'navbar.html' %}{% endblock navbar%}

类似地,其余页面同时介绍了基本和导航栏。

例如,导航栏 {% for country in countries %} 中使用的所有上下文变量都来自主页的视图函数。

当我使用相同的导航栏说“关于我们”页面时,导航栏不会显示所需的信息。

这有帮助吗?

【问题讨论】:

  • 你能给我们看一些代码来让你的问题更容易理解吗?
  • @MaximeLorant 我有代码,但不要太多以避免进一步混淆。希望这可以帮助。如果您需要更多信息,请告诉我。
  • 请指定要在哪里显示哪个导航栏。
  • 我希望我的导航栏是动态的,所以我使用上下文变量。但是上下文变量仅在我在主页上使用时才加载,在任何其他 html 页面上使用时都不起作用。这是因为我只使用了主页视图函数的上下文变量。这有帮助吗?

标签: django django-templates django-context


【解决方案1】:

简单的方法

in base.html

    {% block content %}
    {% endblock %}

    in navbar2.html file
    all html code


in navbar2.html file
        all html code



    other1.html file
    {% extends 'base.html'%}

    {% blck content %}
    {% include 'navbar1.html' %}


    All html code here
    {% endblock %}

other2.html file
        {% extends 'base.html'%}
        {% blck content %}

        {% include 'navbar1.html' %}

        All html code here
        {% endblock %}

如果您想将上下文变量发送到所有文件,则创建将呈现到 base.html 的视图并将该上下文变量传递给 base.html。由于 base.html 在每个模板中都进行了扩展,因此您可以在所有模板中访问该上下文变量

【讨论】:

  • Base 是一个简单的 html 文件,不使用上下文变量,而 navbar 使用。我知道我可以通过将导航栏添加到基本文件中来使其更简单。我不这样做的原因是因为我的博客应用程序使用了不同的导航栏,而我的主应用程序使用了不同的导航栏。但是,这不是我的问题,我希望能够在所有 html 页面上使用一个视图函数中的上下文变量。即使我要将导航栏添加到基础,我仍然需要使用上下文变量。
  • 你应该考虑清理你的答案...有点乱,有些文件名是错误的
猜你喜欢
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
相关资源
最近更新 更多