python - 如何根据用户会话修复 jinja 模板中的登录和注销?
问题描述
我的登录系统在与数据库连接方面运行良好。account/logout
但是,不知何故,一旦用户加载网站,我的 jinja 模板就会显示,而不是login/register
. 但是当用户去account
它去login
。换句话说,它显示出相反的方向。
我做了以下条件:
{% if session['email'] == None %}
<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>
<!--WILL DISPLAY HOME/LOGIN/REGISTER WHEN LOGGED IN-->
{% else %}
<li class="nav-item">
<a class="nav-link text-success" href="{{url_for('user')}}">Account</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{url_for('logout')}}">Logout</a>
</li>
{% endif %}
此外,我几乎可以肯定模板不是问题,而是我试图修复但没有成功的登录功能:
@app.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
user = mongo.db.user
login_user = user.find_one({
'email': request.form.get('email'),
'password':request.form.get('password'
)})
if login_user:
session['email'] = login_user['email']
session['name'] = login_user['name']
return redirect(url_for('user'))
return 'Invalid username or password combination'
解决方案
很可能电子邮件不是会话的属性,使得 session['email'] 未定义。
如果条件可以
{% if session['email'] is not defined or session['email']|length == 0 %}
我宁愿让每个 demorgans 的 if 条件更积极
{% if session['email'] is defined and session['email']|length %}
// logout template
推荐阅读
- swift - 如何在没有任何 UI 元素的情况下录制 ARSCNView?
- javascript - 在多个 fetch() 循环后调用函数
- java - 使用 Sphinx4 和 Python 实现听写系统
- linux - 用于从文件创建数组并使用 curl URL 上的每个值的 Bash 脚本
- html - iframe url 无法在 html5 中打开?
- sql-server - 在 Chrome 中运行的 SSRS 报告未使用 Windows 凭据
- python-3.x - 检查数字并转换华氏度
- java - Java不删除文本文件
- firebase - 如何使用 facebook 在 firebase 身份验证中获取用户数据(名称、图像)?
- jquery - jQuery / CSS - 无需遍历所有元素即可检测溢出