Jinja2块渲染两次

时间:2016-03-25 20:53:43

标签: python flask jinja2

尝试在Flask上渲染Jinja2块时遇到问题。 我有这个:

的layout.html

<!DOCTYPE html>
<html lang="es-ES">
<head>
    <meta charset="UTF-8">
    <title>{% block page_title %}{% endblock %} - misitioweb.es</title>
</head>
<body>
    {% block page_content %}
        <h1>{% block main_title %}{% endblock %}</h1>
    {% endblock %}
</body>
</html>

register.html

{% extends 'layout.html' %}
{% block page_title %}Registrarse{% endblock %}
{% block page_content %}
    {{ super() }}
    {% block main_title %}Registrate aquí{% endblock %}
    <form action="/register/" method="post">
        {{ form.username.label }}{{ form.username() }} <br>
        {{ form.email.label }}{{ form.email() }} <br>
        {{ form.password.label }}{{ form.password() }} <br>
        {{ form.password_compare.label }}{{ form.password_compare() }} <br>
        {{ form.accept_tos.label }}{{ form.accept_tos() }} <br>
        {{ form.submit() }}
    </form>
{% endblock %}

结果就是这个(这只是一个例子,根本没有样式): enter image description here

正如你所看到的,main_title块重复,首先是我想要的,作为H1标题,你可以在layout.html中看到,然后作为一个简单的文本,好像它只是采取块register.html。我使用super()模板在内容中保留包含标题的h1。我只需要H1。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这可能会这样做:

{% extends 'layout.html' %}
{% block page_title %}Registrarse{% endblock %}
{% block main_title %}Registrate aquí{% endblock %}
{% block page_content %}
    <form action="/register/" method="post">
        {{ form.username.label }}{{ form.username() }} <br>
        {{ form.email.label }}{{ form.email() }} <br>
        {{ form.password.label }}{{ form.password() }} <br>
        {{ form.password_compare.label }}{{ form.password_compare() }} <br>
        {{ form.accept_tos.label }}{{ form.accept_tos() }} <br>
        {{ form.submit() }}
    </form>
{% endblock %}