以下是“一个基于flask的web应用诞生 记录用户账户登录状态(6)”的完整攻略:
1. 添加用户注销功能
在用户登录成功后,我们需要给出注销的入口。在html文件中添加以下代码,链接到注销路由:
{% if current_user.is_authenticated %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('logout') }}">注销</a>
</li>
{% endif %}
在app.py
文件中,我们需要为注销添加一个路由。这个路由需要注销用户,并将其重定向到登录页面。添加如下代码:
@app.route('/logout')
def logout():
logout_user()
return redirect(url_for('login'))
2. 每个用户只能修改自己的资料
我们需要添加一个判断逻辑,如果当前访问的用户不是修改资料的用户,则无法进行修改。我们可以通过在edit_profile
路由中传入要修改资料的用户ID来进行判断。
首先,在user.html
文件中,在编辑按钮中添加一个参数来传递用户ID:
<a href="{{ url_for('edit_profile', id=user.id) }}" class="btn btn-sm btn-outline-secondary">编辑资料</a>
接着,在app.py
文件的edit_profile
路由中,将ID传递给User.update()
方法,并进行身份判断。添加如下代码:
@app.route('/user/<int:id>/edit', methods=['GET', 'POST'])
@login_required
def edit_profile(id):
user = User.query.get_or_404(id)
# 只能修改自己的资料
if current_user != user:
abort(403)
form = EditProfileForm(obj=user)
if form.validate_on_submit():
form.populate_obj(user)
user.update()
flash('资料已更新')
return redirect(url_for('user', username=user.username))
return render_template('edit_profile.html', form=form)
以上的修改完成后,用户只能修改自己的资料,其他用户的资料无法进行修改。
希望这个攻略对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个基于flask的web应用诞生 记录用户账户登录状态(6) - Python技术站