Как показать только одну кнопку входа или выхода из системы в шаблоне flask и jinjia2? - PullRequest
0 голосов
/ 01 марта 2020

Я хочу показать кнопку выхода из системы, когда пользователь вошел в систему, и кнопку входа в систему, когда пользователь вышел из системы. Но кнопки показывают столько раз, сколько у меня есть пользователи. Как я могу это исправить?

--html code 
          {% for user in users %}
            {% if user.user_id == session['user_id'] %}
            <li class="nav-item">
              <a class="nav-link js-scroll-trigger" href="/logout">Logout &nbsp;</a>
            </li>
            {% elif user.user_id != session['user_id'] %}
            <li class="nav-item">
              <a class="nav-link js-scroll-trigger" href="/login_register">Login &nbsp;</a>
            </li> 
            {% endif %}
          {% endfor %}

--server.py code
          @app.route('/')
          def landing():

          mysql = connectToMySQL('comfort_zone')
          query = "Select user_id from users"
          users = mysql.query_db(query)
          return render_template('index.html',users=users)

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Вам просто нужно проверить, присутствует ли пользователь в сеансе среди пользователей, затем показать кнопку выхода из системы, в противном случае показать кнопку выхода из системы. Фиксированный код:

index.html:

{% if logged_in %}
    <li class="nav-item">
        <a class="nav-link js-scroll-trigger" href="/logout">Logout &nbsp;</a>
    </li>
{% else %}
    <li class="nav-item">
        <a class="nav-link js-scroll-trigger" href="/login_register">Login &nbsp;</a>
    </li> 
{% endif %}

server.py

@app.route('/')
def landing():
    mysql = connectToMySQL('comfort_zone')
    query = "Select user_id from users"
    users = mysql.query_db(query)
    logged_in = session['user_id'] in (user.user_id for user in users)
    return render_template('index.html', logged_in=logged_in)
0 голосов
/ 01 марта 2020

В зависимости от того, как установлен session['user_id'], я бы сделал это следующим образом:

{% if session['user_id'] %}
    <li class="nav-item">
        <a class="nav-link js-scroll-trigger" href="/logout">Logout &nbsp;</a>
    </li>
{% else %}
    <li class="nav-item">
       <a class="nav-link js-scroll-trigger" href="/login_register">Login &nbsp;</a>
    </li> 
{% endif %}

В принципе, если в сеансе установлено значение user_id (т.е. кто-то вошел в систему), покажите кнопка выхода из системы.

...