【问题标题】:django template inheritance: how to NOT display a block from parent template?django 模板继承:如何不显示来自父模板的块?
【发布时间】:2021-08-27 15:40:12
【问题描述】:

我们如何隐藏子模板中正在被父模板渲染的块?

例如:我的父模板 base.html 包含-

<!DOCTYPE html>
<html lang="en">
....
<body>
{% block messages %}
      <div class="alert alert-{% if message.tags == 'error'%}danger{% else %}{{ message.tags }}{% endif %} alert-dismissible fade in" role="alert">
             {{message}}
      </div>
{% endblock %}
...
</body>
</html>

我在login.html 中继承了这个base.html 但我不想在login.html 中使用 {% block messages %}, 有什么建议? 提前感谢您的任何解决方案????。

【问题讨论】:

  • 感谢 Nikita Zhuikov 的解决方案 {% block messages %}{% endblock %} ...

标签: python html django jinja2 template-inheritance


【解决方案1】:

附带说明,最好的做法是拥有一个不同于您的应用程序基础的登录和注册基础,特别是如果您需要用户登录,因为很多东西不会显示在这些页面上,例如导航栏。

【讨论】:

  • 非常感谢@Mohamed ElKalioby 的建议,会记得?,
【解决方案2】:

您可以在 login.html 中覆盖 {% block messages %},如下所示:

登录.html

{% extends "base.html" %}
{% block messages %}{% endblock %}
...

【讨论】:

  • 抱歉,这不起作用,我仍然可以在 'login.html` 中查看 base messages block,请问还有其他解决方案吗?
  • 其实我不明白为什么这个解决方案不适合你,你可以显示你的 login.html 代码吗?
  • 感谢 Nikita Zhuikov,实际上我的 base.html 将另一个文件中的 messages block 包含为 {% include 'partials/_topbar_navigation.html' %},我将消息块移动到 base.html 。现在它正在工作。再次感谢。
猜你喜欢
  • 2014-06-04
  • 2018-08-18
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多