欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Flask实战2问答平台-完成登录注册功能

发布时间:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Flask实战2问答平台-完成登录注册功能 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本来可以提前完成这篇的,结果测试时发现了一些问题,稍后将会提到.
上篇中我们已经完成了登录注册的界面,现在具体完成其具体功能.

1.注册功能

因为注册成功后,才能登录,我们在主py文件中添加如下

@app.route('/register',methods = ['GET','POST']) def register():if request.method == 'GET':return render_template('register.html')else:#request.form.get()获取用户表单输入,通过nametelephone = request.form.get('telephone')username = request.form.get('username')password1 = request.form.get('password1')password2 = request.form.get('password2')#查询数据库中手机号码是否已经存在user = User.query.filter(User.telephone == telephone).first()if user:return '该手机号已被注册,请更换手机号码'# flash('该手机号已被注册,请更换手机号码')# return render_template('register.html')else:#如果用户两次密码不一致,则进行提醒if password1 != password2:return '两次密码不相等,请核对后再填写'else:#在数据库中添加注册的数据user = User(telephone = telephone,username = username,password = password1)db.session.add(user)db.session.commit()return redirect(url_for('login'))

2.登录功能

同样在主py文件中添加

@app.route('/login',methods = ['GET','POST']) def login():if request.method == 'GET':return render_template('login.html')else:telephone = request.form.get('telephone')password = request.form.get('password')user = User.query.filter(User.telephone == telephone,User.password == password).first()if user:session['user_id'] = user.id #如果需要31天内不需要登录,则进行如下一行设置session.permanent = Truereturn redirect(url_for('index'))else:return '手机号码或者密码错误,请确认后再登录'

3.注销功能

注销需要实现的是一下两图中的切换

主py文件中添加如下代码

@app.route('/logout') def logout():#session.pop['user_id'] 或者del session['user_id']# 或者# session.clear()return redirect(url_for('login'))

然后更改base.html,更改后如下,当时出错的原因是<li><a href="{{url_for('logout')}}">注销</a></li> 这句出错了,导向了login函数,应该是logout函数才对,因为logout才把session清除了,也就是说删除了当前用户的登录状态

<ul class="nav navbar-nav navbar-right">{% if user%}<li><a href="#">{{user.username}}</a></li><!-- 之前这里url_for倒错了位置,原先成了login --><li><a href="{{url_for('logout')}}">注销</a></li>{% else %}<li><a href="{{url_for('login')}}">登录</a></li><li><a href="{{url_for('register')}}">注册</a></li>{% endif %}</ul>

总结

以上是生活随笔为你收集整理的Flask实战2问答平台-完成登录注册功能的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。