【问题标题】:Strip HTML from Django template block?从 Django 模板块中剥离 HTML?
【发布时间】:2017-03-03 20:59:18
【问题描述】:

在我的 Django base.html 模板中,我有一个 title 块:

<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
</html>

在页面模板中,我使用该块中其&lt;h1&gt; 页面标题中的文本,因此它也出现在&lt;title&gt; 标记中,例如:

{% extends 'base.html' %}

{% block content %}
    <h1>{% block title %}Hello world!{% endblock %}</h1>
{% endblock %}

一切正常。但是如果我想像这样在页面的&lt;h1&gt; 中使用 HTML 标记...

{% extends 'base.html' %}

{% block content %}
    {% block title %}<b>Hello</b> world!{% endblock %}
{% endblock %}

...这些标签也会出现在&lt;title&gt; 中,这是不允许的。

除了有两个版本的标题之外还有其他方法吗:一个在&lt;h1&gt; 中,一个在{% block title %} 中的无 HTML 版本?我不认为有办法从块中剥离 HTML?

【问题讨论】:

  • 我能想到的唯一解决方法是给 h1 中的块一个不同的名称。
  • 是的,这 - 有两个不同命名的块 - 是我希望避免的。 90% 的页面只需要一个 title 块。但少数在&lt;h1&gt; 中有HTML。
  • 如果您从视图中传递值,您可以使用striptags 模板过滤器。
  • @xyres 我没有从视图中传递值;这是模板中的 text/html,如图所示。
  • 我很想知道为什么我的问题被否决了...

标签: django django-templates


【解决方案1】:

你可以像这样使用cycle

{% extends 'base.html' %}

{% block content %}
        <h1>
            {% block title %}
            {% cycle '' '<b>' %}Hello world!{% cycle '' '</b>' %}
            {% endblock %}
        </h1>
{% endblock %}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多