【问题标题】:django set global variable in templatedjango 在模板中设置全局变量
【发布时间】:2017-08-15 18:33:30
【问题描述】:

我正在使用需要在每个页面上更改的横幅图像,我想在 html 模板中设置横幅,以便我为其构建它的人轻松添加新页面。

我正在用 django 开发它,但我不知道如何让它工作,请帮忙!

示例:

index.html

set image url here
{% extends 'base.html' %}

base.html

<html>
  <body>
    {% include 'top.html %}
  </body>
</html>

top.html

<div>
  <img src="{{ image url }}">
</div>

【问题讨论】:

    标签: html django templates variables


    【解决方案1】:

    Django 模板语言不允许您设置变量。您可以通过使用块来实现类似的目标。将您的基本模板更改为:

    base.html

    <html>
      <body>
        <div>
          <img src="{% block image_url %}/default_image.jpg{% endblock %}">
        </div>
      </body>
    </html>
    

    然后覆盖模板中的image_url 块,例如

    index.html

    {% extends 'base.html' %}
    {% block image_url %}/images/index.jpg{% endblock %}
    

    请注意,这种方法无法使用{% include top.html %},因为您无法覆盖{% include %} 标签中包含的块。

    【讨论】:

    • 嗨 Alasdair ...我很害怕。 Django只是继续令人失望! ...但感谢您的帮助!
    【解决方案2】:

    好吧,我不太明白,但如果你删除 top.html 并将该内容包含在基础中应该会更好:

    <html>
      <body>
        <div>
          <img src="{% block url_img %}{% enblock %}">
        </div>
      </body>
    </html>
    

    在你的索引中

    {% extends 'base.html' %}
    {% block url_img %}here images url{% endblock %}
    

    如果您将 top.html 用于其他目的,也可以这样做:

    {% extends 'base.html' %}
    {% block url_img %}{{ image url }}{% endblock %}
    

    【讨论】:

    • 嗨 Mauricio ...尝试了你的建议,但它不起作用!我得到的只是 src=""
    • 那么block有问题,在div里面创建一个空block,把所有的标签都粘贴到url中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多