博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础-项目实战-day10 用户注册与登陆
阅读量:4146 次
发布时间:2019-05-25

本文共 2921 字,大约阅读时间需要 9 分钟。

一 项目来源

廖雪峰老师的项目实战

二 用户注册与登陆

1.注册

============================================handlers.py@get('/register')def register():    return {        '__template__': 'register.html'    }============================================register.html$form.postJSON('/api/users', {                    name: this.name.trim(),                    email: email,                    passwd: CryptoJS.SHA1(email + ':' + this.password1).toString()============================================handlers.py                 @post('/api/users')def api_register_user(*, email, name, passwd):    if not name or not name.strip():        raise APIValueError('name')    if not email or not _RE_EMAIL.match(email):        raise APIValueError('email')    if not passwd or not _RE_SHA1.match(passwd):        raise APIValueError('passwd')    users = yield from User.findAll('email=?', [email])    if len(users) > 0:        raise APIError('register:failed', 'email', 'Email is already in use.')    uid = next_id()    sha1_passwd = '%s:%s' % (uid, passwd)    user = User(id=uid, name=name.strip(), email=email, passwd=hashlib.sha1(sha1_passwd.encode('utf-8')).hexdigest(), image='http://www.gravatar.com/avatar/%s?d=mm&s=120' % hashlib.md5(email.encode('utf-8')).hexdigest())    yield from user.save()    # make session cookie:    r = web.Response()    r.set_cookie(COOKIE_NAME, user2cookie(user, 86400), max_age=86400, httponly=True)    user.passwd = '******'    r.content_type = 'application/json'    r.body = json.dumps(user, ensure_ascii=False).encode('utf-8')    return r

2.登陆

============================================handlers.py @get('/signin')def signin():    return {        '__template__': 'signin.html'    }============================================signin.html    $form.postJSON('/api/authenticate', data, function(err, result) {        if (! err) {            location.assign('/');        }============================================handlers.py @post('/api/authenticate')def authenticate(*, email, passwd):    if not email:        raise APIValueError('email', 'Invalid email.')    if not passwd:        raise APIValueError('passwd', 'Invalid password.')    users = yield from User.findAll('email=?', [email])    if len(users) == 0:        raise APIValueError('email', 'Email not exist.')    user = users[0]    # check passwd:    sha1 = hashlib.sha1()    sha1.update(user.id.encode('utf-8'))    sha1.update(b':')    sha1.update(passwd.encode('utf-8'))    if user.passwd != sha1.hexdigest():        raise APIValueError('passwd', 'Invalid password.')    # authenticate ok, set cookie:    r = web.Response()    r.set_cookie(COOKIE_NAME, user2cookie(user, 86400), max_age=86400, httponly=True)    user.passwd = '******'    r.content_type = 'application/json'    r.body = json.dumps(user, ensure_ascii=False).encode('utf-8')    return r

三 运行效果

1.注册界面

image

mysql数据库

image

2.登陆界面

image

四 Git

git add www/git commit -m "Python基础-项目实战-day10 用户注册与登陆"git push -u origin master

转载地址:http://zocti.baihongyu.com/

你可能感兴趣的文章
java中的静态变量、静态方法与静态代码块区别
查看>>
JAVA中静态块、静态变量加载顺序详解
查看>>
Spring Cloud 学习(六)分布式配置中心
查看>>
Intellij Idea的常用快捷键
查看>>
分布式架构的演进过程
查看>>
分布式系统架构设计
查看>>
幂等性问题及解决方案
查看>>
Spring与HikariCP的结合使用
查看>>
如何设置连接池的大小?
查看>>
Lombok介绍
查看>>
elastic-job的原理简介和使用
查看>>
两种方法上传本地文件到github
查看>>
linux下开启SSH,并且允许root用户远程登录,允许无密码登录
查看>>
Docker之私有仓库的搭建
查看>>
Centos7上安装docker
查看>>
Docker配置阿里云镜像
查看>>
Docker下的数据持久化操作
查看>>
深入分析Zookeeper的实现原理
查看>>
国内最火的10款java开源项目
查看>>
pure-ftpd在linux安装教程
查看>>