Счетчик в HTML? - PullRequest
       5

Счетчик в HTML?

2 голосов
/ 02 мая 2011

Я использую движок Google App, в html-файле я хочу показывать разные экраны разным пользователям, т.е.

  1. они не вошли в систему, показать им экран входа в систему
  2. Они вошли в систему и впервые используют систему
  3. Они - постоянный пользователь

Пока что циклы в моем коде выглядят следующим образом

{% ifequal access_token None %}             
            <!-- Log in user-->     
{% else %} 
      {% ifequal user_set None %}
           <!-- First ever user in DB -->
      {% else%}
           {% for user in user_set %}
                {% ifequal user.session_ID access_token %}
                       <a href="/logout">Logout {{user.user_name}}</a>
                {% else %}
                       <!-- add in counter? -->
                {%endifequal%}
           {% endfor %} 
      {% endifequal%}           
{% endifequal %}

Есть ли способ увеличить счетчик в цикле for, как показано в комментариях, который затем можно проверить, и если 0, то пользователь уже не находится в БД?

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

Во-первых, не самая лучшая идея перебрать всех ваших пользователей в вашем шаблоне. Было бы лучше использовать запрос базы данных filter в вашем view, чтобы найти пользователя, и установить соответствующую переменную для определения действия в вашем шаблоне. При этом, можно получить счетчик forloop. Внутри петли он задается как forloop.counter (считается от 1) или forloop.counter0 (считается от 0). Вы можете прочитать больше об этом в Django документах .

       {% for user in user_set %}
            {% ifequal user.session_ID access_token %}
                   <a href="/logout">Logout {{user.user_name}}</a>
            {% else %}
                   <!-- add in counter? -->
                   {{forloop.counter}} <!-- current count -->
            {%endifequal%}
       {% endfor %} 
1 голос
/ 02 мая 2011

Вы должны использовать декораторы в представлениях для пользователей, которые не прошли проверку подлинности.попробуйте декоратор @ login_required .

Для счетчиков входа лучше создать целочисленное поле базы данных для вашей модели профиля , скажем, login_counts.Затем вы увеличиваете это значение каждый раз, когда пользователь входит в систему. Получение правильного сигнала входа в систему может быть немного сложнее, так как могут быть перенаправления и неудачные входы в систему и другие вещи.См. сообщение для более подробной информации

1 голос
/ 02 мая 2011

Вы должны рассмотреть вопрос об изменении способа перенаправления. Не стоит перебирать всех пользователей в БД в шаблонах. Скорее, вам следует написать фильтр или переместить логику в файлы контроллеров. Декоратор пригодится вам. Что касается вашего вопроса, вы не можете установить счетчик внутри шаблона. Если вы хотите, вы можете использовать по умолчанию для переменных цикла. Я не думаю, что это будет вам полезно.

forloop.counter     The current iteration of the loop (1-indexed)
forloop.counter0    The current iteration of the loop (0-indexed)
forloop.revcounter  The number of iterations from the end of the loop (1-indexed)
forloop.revcounter0     The number of iterations from the end of the loop (0-indexed)
forloop.first   True if this is the first time through the loop
forloop.last    True if this is the last time through the loop
forloop.parentloop  For nested loops, this is the loop "above" the current one
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...