Использование одного и того же блока в шаблоне django для отображения различной информации в зависимости от переменной - PullRequest
1 голос
/ 05 апреля 2011

Эй, мистер, переполнение стека!Я пытаюсь отображать различную информацию в одном и том же блоке в зависимости от переменной "choice", которая является просто int.То, как я планировал это сделать, должно было выглядеть примерно так:

{% extends "index.html"%}

{%block head%}
    <p><h1>Welcome to Piss && ink {{user}}</h1></p>
{%endblock head%}   

{%block one%}     
    <p>The temperature in {{city}} is {{temperature}}&deg </p>
{%endblock one%}

{%if choice1 == 2 %}
    {%block two%}     
        <p>The temperature in {{city}} is {{temperature}}&deg </p>
    {%endblock two%}
{% endif %}

{%comment%}
    {%if choice1 == 2 %}
        {%block two%}
            <p>The temperature in {{city}} is {{temperature}}&deg </p>
        {%endblock%}
    {% endif %}
{%endcomment%}

{%block two%}
    <form method="post">
    {%csrf_token%}
    {% if new_event %}
        <b><p>{{new_event}}</p></b>
    {% endif %}
{%endblock%}

Теперь проблема в том, что шаблону не нравится, что есть два одинаковых блокаимя в шаблоне.По какой-то причине это, похоже, не заботит оператор {% if %}, который проверяет, куда должен идти {% block %}.Я думал, что оператор {% if %} будет выполнять только то, что было внутри него, в зависимости от его параметров, но, похоже, он этого не делает.Он отображает все внутри {% if %}, независимо от того, что "choice1" тоже равно :( Кто-нибудь знает, как я могу это исправить? Спасибо

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

Поместите логику в блок вместо двух блоков с одинаковым именем.

Вместо:

{%if choice1 == 2 %}
    {%block two%}     
        <p>The temperature in {{city}} is {{temperature}}&deg </p>
    {%endblock two%}
{% endif %}

{%comment%}
    {%if choice1 == 2 %}
        {%block two%}
            <p>The temperature in {{city}} is {{temperature}}&deg </p>
        {%endblock%}
    {% endif %}
{%endcomment%}

{%block two%}
    <form method="post">
    {%csrf_token%}
    {% if new_event %}
        <b><p>{{new_event}}</p></b>
    {% endif %}
{%endblock%}

использование:

{% block two %}
    {% if choice1 == 2 %}
        <p>The temperature in {{city}} is {{temperature}}&deg </p>
    {% else %}
        <form method="post">
        {%csrf_token%}
        {% if new_event %}
            <b><p>{{new_event}}</p></b>
        {% endif %}
    {% endif %}
{% endblock %}
1 голос
/ 05 апреля 2011

Поместите if в блок. Один блок, два оператора if

{% block two %}
    {% if choice == 1 %}
        <p>Some Content</p>
    {% endif %}
    {% if choice == 2 %}
        <p>Other Content</p>
    {% endif %
{% endblock two %}
0 голосов
/ 05 апреля 2011

Другим способом сделать это (если шаблоны сильно отличаются) будет сделать что-то вроде:

{% extends choice_template %}

и установить choice_template в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...