当用户登录到站点时,如何显示不同的导航栏

2024-10-01 16:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的项目创建一本食谱,并试图在用户登录到 网站显示“菜谱、添加菜谱、注销”并隐藏“登录和注册链接”。我一直在关注这段youtube视频https://www.youtube.com/watch?v=vVx1737auSE,但当我登录该网站时,导航没有改变

导航:

  <div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
  <li class="nav-item active">
  {% if session.user %}      
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('recipes')}}"> Recipes</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('add_recipe') }}" >Add Recipe</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('logout') }}" >Logout</a>
    </li>       
    {% else %}
  <li class="nav-item">
    <a class="nav-link" href="{{url_for('login')}}">Login</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="{{url_for('register')}}">Register</a>
  </li>   
   {% endif %}
  </li>   
</ul> 

app.py

from flask import Flask, render_template, url_for, session, redirect, request, flash

import bcrypt


@app.route("/login", methods=["GET", "POST"])
def login():   
 if request.method == 'POST':
     users = mongo.db.users
     login_user = users.find_one({'name' : request.form['username']})
     if login_user:
         if bcrypt.hashpw(request.form['password'].encode('utf-8'), login_user['password']) == login_user['password']:
             session['username'] = request.form['username']
             flash('You have been successfully logged in!')
             return redirect(url_for('index'))        
     return 'Invalide username/password combination'
 return render_template('pages/login.html')

Tags: urlforifrequestsessionlinkusernamelogin

热门问题