Как показать что-то пользователям, только когда они вошли в систему - PullRequest
0 голосов
/ 02 мая 2020

поэтому я делаю этот сайт и пытаюсь выяснить, как показать что-то на панели навигации, если пользователь вошел в систему. Я использую наследование, поэтому у меня есть моя панель навигации в макете. html , Я не уверен, как поставить условие там, чтобы оно работало со всем моим кодом на каждой странице. Я думал, что мог бы добавить оператор if, а затем определить его на каждом маршруте, но у меня есть около 20 маршрутов, и я пытаюсь найти более эффективное решение. Я кодирую в python, используя Flask. Спасибо всем за помощь.

Редактировать: я забыл добавить код

Вот моя функция входа в систему

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        name=request.form.get("name")
        password = request.form.get("password")
        sqlname = db.execute(text("SELECT name FROM users WHERE name=:name"),{"name":name}).fetchone()
        sqlpassword = db.execute(text("SELECT password FROM users WHERE name=:name"),{"name":name}).fetchone()
        if sqlname == None:
            message="You are not registered with this username, please register first."
            return render_template("registration.html", message=message)
        else:
            for passw in sqlpassword:
                if passw == password:
                    session["name"] = name
                    return redirect(url_for("dashboard"))
                else:
                    message = "Something went wrong, please try again."
                    return render_template("login.html", message=message)
    elif "name" in session:
            return redirect(url_for("dashboard"))
    return render_template("login.html")

Вот мой макет. html, я просто хотите скрыть форму, если пользователь не вошел в систему

  <nav>
        <form class="form-inline my-2 my-lg-0" action="{{ url_for('search')}}">
            <input class="form-control mr-sm-2" name="search" placeholder="Search">
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
  </nav>

1 Ответ

0 голосов
/ 02 мая 2020

Если вы используете flask -login или flask -user, можно добавить оператор if в основной шаблон (layout. html?) На панели навигации. Также см. https://flask-login.readthedocs.io/en/latest/

{% if current_user.is_authenticated %}
...