Flask实战第46天:完成前台登录功能
2024-10-17 20:28:04
后台逻辑
首先进行表单验证, 编辑front.froms.py
...
class SignInForm(BaseForm):
telephone = StringField(validators=[Regexp(r'1[35678]\d{9}', message='手机号码格式错误')])
password = StringField(validators=[Length(5, 30, message='密码格式错误')])
remember = StringField()
在config.py中配置一个用作保存前台session的常量
FRONT_USER_ID = 'WFQQ132FEVFW'
然后写视图了,编辑front.view.py
...
import config
from .forms import SignInForm class SignInViews(views.MethodView):
def get(self):
return_to = request.referrer
if return_to and return_to != request.url and safeutils.is_safe_url(return_to):
return render_template('front/front_signin.html', return_to=return_to)
return render_template('front/front_signin.html') def post(self):
signin_form = SignInForm(request.form)
if signin_form.validate():
telephone = signin_form.telephone.data
password = signin_form.password.data
remember = signin_form.remember.data
user = FrontUser.query.filter_by(telephone=telephone).first()
if user and user.check_password(password):
session[config.FRONT_USER_ID] = user.id
if remember:
session.permanent = True
return xjson.json_success('登录成功')
else:
return xjson.json_param_error('手机号或密码错误')
else:
return xjson.json_param_error(signin_form.get_error()) bp.add_url_rule('/signin/', view_func=SignInViews.as_view('signin'))
前端逻辑
在static/front/js下新建个js文件front_signin.js(获取注册按钮,配置它的点击事件)
$(function(){
$("#submit-btn").click(function (event) {
event.preventDefault();
var telephone_input = $("input[name='telephone']");
var password_input = $("input[name='password']");
var remember_input = $("input[name='remember']"); var telephone = telephone_input.val();
var password = password_input.val();
var remember = remember_input.checked ? 1 : 0; //如果有选择返回1否则返回0 bbsajax.post({
'url': '/signin/',
'data': {
'telephone': telephone,
'password': password,
'remember': remember
},
'success': function (data) {
if(data['code'] == 200){
var return_to = $("#return-to-span").text();
if(return_to){
window.location = return_to;
}else{
window.location = '/';
}
}else{
xtalert.alertInfo(data['message']);
}
}
});
});
});
把front_signin.js引入到front_signin.html中
{% block head %}
<script src="{{ url_for('static', filename='front/js/front_signin.js') }}"></script>
{% endblock %}
把front_signbase中的front_signup.js引入去掉,在front_signup.html中引入它
{% block head %}
<script src="{{ url_for('static', filename='front/js/front_signup.js') }}"></script>
{% endblock %}
最新文章
- 查看死锁 的存储过程 ,工具存储过程 sp_who_lock
- iOS开发如何学习前端
- office openxml学习(一)
- java 19 -14 File类的判断并输出案例
- beta版本项目冲刺
- grunt <;% %>;模板和使用配置文件
- QT Creator 代码自动补全快捷键设置
- 如何设置EditPlus的默认编码utf-8方式
- Directx 3D编程实例:绘制可变速旋转的三角形
- Android让你的Toast变得炫酷
- Java:从面试题“i++和++i哪个效率高?";开始学习java字节码
- sgu102 Coprimes
- iOS 通讯录空格
- Collections类解析
- 一行代码实现FMDB的CURD操作
- springBoot+ vue+ Element-ui实现合并多图上传(一次请求多张图片)
- 吴裕雄 python深度学习与实践(9)
- 第三章&#160;列表(a)接口与实现
- 用 setMessage 方法灵活复用 UIAlertView
- GridControl 之 BandedGridView
热门文章
- 【BZOJ3998】弦论 [SAM]
- 微信小程序提示框
- MSSQL DBcheck
- feign hystrix 线程池伸缩控制
- $.on方法与$.click()的区别
- python中正则用法举例
- 有向有权图的最短路径算法--Dijkstra算法
- 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记
- 448D - Codeforces
- FISCO-BCOS平台共识