Flask实战第46天:完成前台登录功能
后台逻辑
首先进行表单验证, 编辑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 %}
Flask实战第46天:完成前台登录功能的更多相关文章
- WordPress实现前台登录功能
一.添加登录表单 1.首先在当前主题的目录下新建一个php文件,命名为page-login.php,然后将page.php中的所有代码复制到page-login.php中: 2.删除page-logi ...
- 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...
- Flask实战第38天:前台模型创建
安装shortuuid pip install shortuuid 编辑front.models.py from exts import db import shortuuid from werkze ...
- Flask实战第58天:发布帖子功能完成
发布帖子后台逻辑完成 首先给帖子设计个模型,编辑apps.models.py class PostModel(db.Model): __tablename__ = 'post' id = db.Col ...
- 【SSH网上商城项目实战18】过滤器实现购物登录功能的判断
转自:https://blog.csdn.net/eson_15/article/details/51425010 上一节我们做完了购物车的基本操作,但是有个问题是:当用户点击结算时,我们应该做一个登 ...
- WordPress添加前台注册功能
一.添加注册表单 1.首先在当前主题的目录下新建一个php文件,命名为reg-page.php,然后将page.php中的所有代码复制到reg-page.php中: 2.删除reg-page.php开 ...
- Spring+Hibernate+Struts2整合之实现登录功能
前端代码: <form id="loginForm" action="${ pageContext.request.contextPath }/user_login ...
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- 27、Flask实战第27天:cms后台登录
cms后台登录界面 后台登录页面,我们不用自己写,只需要去Bootstrap中文网去找一个模板改一下就行 这里使用的模板是:https://v3.bootcss.com/examples/signin ...
随机推荐
- 使用JMeter录制脚本并调试
仍然以禅道中添加bug为例进行录制 第一步:在JMeter中添加线程组,命名为AddBugByJMeter 第二步:在线程组下添加HTTP请求默认值 添加->配置元件->HTTP请求默认值 ...
- 洛谷P3764 签到题 III
题目背景 pj组选手zzq近日学会了求最大公约数的辗转相除法. 题目描述 类比辗转相除法,zzq定义了一个奇怪的函数: typedef long long ll; ll f(ll a,ll b) { ...
- bzoj 1594: [Usaco2008 Jan]猜数游戏——二分+线段树
Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面摆N(1 <= N<= 1,000,00 ...
- 【BZOJ】1984 月下“毛景树”
[算法]树链剖分+线段树 [题解]线段树的区间加值和区间覆盖操作不能同时存在,只能存在一个. 修改:从根节点跑到目标区域路上的标记全部下传,打完标记再上传回根节点(有变动才需要上传). 询问:访问到目 ...
- 2017ACM暑期多校联合训练 - Team 1 1001 HDU 6033 Add More Zero (数学)
题目链接 Problem Description There is a youngster known for amateur propositions concerning several math ...
- canvas_基于canvan绘制的双半圆环进度条
效果图 实现原理: 1.使用canvas绘制两个半圆弧,底图灰色半圆弧和颜色进度圆弧. 2.利用setInterval计时器,逐步改变颜色进度条,达到进度条的效果. 效果代码: <!DOCTYP ...
- YUV颜色编码解析(转)
原文转自 https://www.jianshu.com/p/a91502c00fb0
- 比 file_get_contents() 更优的 cURL 详解(附实例)
PHP 可以使用 file_get_content() 函数抓取网页内容,但却无法进行更复杂的处理,譬如文件的上传或下载. Cookie 操作等等.而 cURL 提供了这些功能. 一.cURL简介 在 ...
- C# 判断一个单链表是否有环及环长和环的入口点
1.为什么写这个随笔? 前几天参加一个电面,被问到这个问题,想总结一下. 2.为什么标题强调C#? 想在网上看看代码,却没找到C#版的,于是自己用C#实现一下. 一.解决问题的思路 1.一种比较耗空间 ...
- react项目中遇到的一些问题
推荐使用facebook官方构建工具create-react-app来创建React基础工程.(然而我还是手动构建) (路由)官方旧版本和V4的比较.https://github.com/ReactT ...