我的登录系统在与数据库连接方面运行良好。但是,以某种方式,我的jinja模板会在用户加载网站后立即显示account/logout
,而不是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'
答案 0 :(得分:0)
电子邮件可能不是会话的属性,因此未定义session ['email']。
如果条件可以
{% if session['email'] is not defined or session['email']|length == 0 %}
我宁愿让每个去摩的if条件变得更积极
{% if session['email'] is defined and session['email']|length %}
// logout template
答案 1 :(得分:0)
此问题的答案如下:
{% if not session['email'] %}
<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 %}