实现注册的基本逻辑:
1,注册页面,
注意:注册页面需要静态文件的支持,另外注册页面是基础基类的,
1,url,路由系统,
2,views,视图系统,还是使用类视图,里面有很多的函数,
get函数,得到注册页面,
post函数,处理四个事情:#web开发的通用的一个流程就是这样的,
1,接收数据
2,进行数据校验:用户已存在的时候要做异常处理,注册失败的时候要做异常处理,
3,进行业务处理,进行用户注册,创建一条用户记录,可以使用django的认证系统,提供了一个创建用户的方法,
user = User.objects.create_user(username, email, password)
发送激活邮件,包含激活链接,每一个人的都应该是不一样的,包含用户的身份信息,如何设计??:127.0.0.1:8000/user/active/1(id)
这样发了这个邮件,我就可以获取到最后的id,我收到了邮件,就知道你在激活,我就可以去修改数据库了,
但是有些人会捣乱,不停的修改id去访问,所以怎么办?就要id加密
怎么加密?引入一个包:from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
除了加密之外,还可以设置过期时间,时间过了连接失效,就不能激活了,
过期了之后,实际应该返回一个页面,然后点击一个地方,可以再发一个激活连接,
发送邮件需要配置,注意,
加密是在注册的函数,解密的时候是一个单独的函数,解密函数,
发邮件的流程需要优化,因为这是一个阻塞型的,因为邮件没发完就要等待,用户体验不好,怎么解决?
异步执行任务,python中有一个celery的包,可以执行异步的执行任务,比如发送邮件,上传文件,下载文件,这种耗时的操作都可以使用celery
4,返回应答,使用反向解析返回首页,valid:有效的 pattern:模式
类视图的原理:所以有时间的话,还是应该阅读以下源码的,但是现在不是时候,
反向解析url的问题,也需要看看,这个比较紧迫,
人的记忆是有限的,程序员的记忆也就是3万行代码,所以有一些固定的东西,拿来就用的东西,不要去记,要去记那些核心的东西,
---------------------------------------
celery的介绍
有三个核心的概念:
任务的发出者(需要发邮件的一方),中间是一个任务队列(中间人broker),任务的处理者(就是帮助发邮件的这就是worker),
首先任务发出者,发出任务之后,不能直接告诉任务的处理者,要先到任务队列,
任务的处理者会监听任务队列,有的话就执行,
celery本身是没有提供任务队列的功能的,需要借助一个rabbitMQ数据库,或者Redis,都是可以作为中间人的,这里我们使用Redis来承担任务队列的作用,
这样的设计就不会阻塞了,
安装celery,pip install celery
安装redis:pip install redis 验证redis是否安装成功,在cmd窗口输入python命令之后再输入import redis,如果没有出现模块不存在则表示安装成功。
安装之后怎么使用呢?
VMware和Ubuntu的安装,
想来想去,还是需要安装,不能老是使用Windows的,后面还有很多都要用到Linux系统的,这个可以说是开发人员必备的了,
#########################################################################