0

当我为多个条目投票时,for 循环中的每个条目都会重复“添加投票”按钮。关于我应该如何修复逻辑以便添加投票按钮只出现一次的任何想法?

                    {{ user.get_profile.votes.all }}

                {% for v in user.get_profile.votes.all %}
                    {% if v.entry = e.entry %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="remove_vote" value='Remove Vote'>
                        </form>
                    {% elif v.entry != e.entry %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="add_vote" value='Add Vote'>
                        </form>
                    {% endif %}
                    {% empty %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="add_vote" value='Add Vote'>
                        </form>
                {% endfor %}

截屏

4

2 回答 2

2

在 Django 中,你有一个 forloop 计数器,你可以像这样使用它:

{% if forloop.first %}
    <input type='submit' name="add_vote" value='Add Vote'>
{% endif %}

而且您的按钮只会在循环的第一轮中。

于 2012-10-05T12:43:41.330 回答
1

稍微清理一下你的代码:

          <form action="/profile/" method="post">
            {% csrf_token %}
            <input type='hidden' name='entry_id' value='{{ e.id }}'>
            <input type='hidden' name='project_id' value='{{ p.id }}'>
            <input type='hidden' name='team_id' value='{{ t.id }}'>

            {% for v in user.get_profile.votes.all %}
                {% ifequal v.entry e.entry %}
                    <input type='submit' name="remove_vote" value='Remove Vote'>
                {% elif v.entry != e.entry %}
                    <input type='submit' name="add_vote" value='Add Vote'>
                {% endifequal %}
            {% endfor %}
          </form>

由于 else 动作在两种情况下都是相同的;您只需要检查一次条目。我还修复了您的模板,因为您有一个=需要两个进行比较的模板。

于 2012-10-05T12:57:09.323 回答