python - 用户登录网站时如何显示不同的导航栏
问题描述
我正在为我的项目创建一本食谱,并尝试在用户登录网站时切换 nabvar,以便它显示“食谱、添加食谱、注销”并隐藏“登录和注册链接”。我正在关注这个 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>
应用程序.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')
解决方案
当您将密钥添加username
到调用路由的会话中时login
,您需要签session.username
入您的 jinja 模板。
推荐阅读
- r - 是否有一个特定的函数可以用来在 R 中将两个箱线图合并为一个?
- azure - Azure 自定义角色:授权为一组特定角色分配角色
- asp.net - 在构建管道期间覆盖发布配置文件的发布文件夹 (url)
- javascript - 使用 componentDidUpdate 改变组件中的状态
- ios - Outlook for iOS 使用 ms-outlook://compose 删除空间
- python - 如何使用打字来强制使用特定的枚举作为python中的参数
- ios - Swift - Firestore 为数组元素创建子集合
- php - 如何将 json 添加为 url 的一部分?
- sql-server - SQL Server 2012 中 XML 元素的位置
- sql - 如何使用带有罗马数字和日期的 ORDER BY