实现注册的基本逻辑:

1,注册页面

  • 注意:注册页面需要静态文件的支持,另外注册页面是基础基类的,
  • 1,url,路由系统,
  • 2,views,视图系统,还是使用类视图,里面有很多的函数,

2,views.py文件

  • get函数,返回浏览器注册页面,
  • post函数,
  • 这个函数处理四个事情:#web开发的通用的一个流程就是这样的,
  • 1,接收数据
  • 2,进行数据校验:用户已存在的时候要做异常处理,注册失败的时候要做异常处理,
  • 3,进行业务处理,进行用户注册,创建一条用户记录,可以使用django的认证系统,提供了一个创建用户的方法,
  •       user = User.objects.create_user(username, email, password)
  • 4,返回应答,使用反向解析返回首页,valid:有效的  pattern:模式

######################################################################

激活邮件的设计思路

  • 需求背景:
  • 用户注册之后,给用户发送一个激活邮件,提示用户去打开邮件,
  • 然后用户点击这个激活邮件之后激活账户,点击激活连接要跳转到登陆页面
  • 如果链接过期了之后,实际应该返回一个页面,然后点击一个地方,可以再发一个激活连接,

 

  • 代码设计,
  • 发送激活邮件,包含激活链接,每一个人的都应该是不一样的,包含用户的身份信息,如何设计??
  • 设计成这样一个连接,127.0.0.1:8000/user/active/1(id)
  • 这样发了这个邮件,我就可以获取到最后的id,我收到了邮件,就知道你在激活,我就可以去修改数据库了,
  • 但是有些人会捣乱,不停的修改id去访问,所以怎么办?就要id加密
  • 加密:
  • 引入一个包:from itsdangerous import TimedJSONWebSignatureSerializer as Serializer,这个这个包加密,
  • 除了加密之外,还可以设置过期时间,时间过了连接失效,就不能激活了,
  • 发送邮件的配置:
  • 加密是在注册的函数,解密的时候是一个单独的函数,解密函数,

 

问题:

  • 发邮件的流程需要优化,因为这是一个阻塞型的,因为邮件没发完就要等待,用户体验不好,怎么解决?
  • 异步执行任务,python中有一个celery的包,可以执行异步的执行任务,比如发送邮件,上传文件,下载文件,这种耗时的操作都可以使用celery

 

##################################################################

 

好了,task启动成功了,

 哈哈,我现在已经把邮件发出去了,哈哈!!!!

总结:

这一个问题,我太痛苦了,专门系统学习了Linux,git,redis,还有各种坑,装了很多的东西,包括完整的开发环境,花费了我4天的时间,

不过总的来讲还是非常值得的,

 ######################################################################################################

 

用户登录:

login类里面,继续写post函数,

  • 要做四个事情,
  • 接受数据
  • 校验数据
  • 业务处理,登陆校验,使用django的认证系统,user = authenticate(username=username, password=password)
  • 返回应答,

配置redis,作为django缓存和session存储后端,

  • 如果你不做配置,session是放在数据库中,
  • 但是每次都到数据库中读写,速度是比较慢的,所以不能使用默认的保存session的方式,我们要有redis数据库,
  • 我们需要用到一个包,django-redis,
  • 怎么使用?
  • 要配置,
  • # Django的缓存配置,默认缓存是在本机内存中
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            'LOCATION': 'redis://:###@192.168.80.129:6379/5',
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    
    
    # 配置session存储,默认的登录状态是保存在django数据库中的session表中
    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    SESSION_CACHE_ALIAS = "default"
    View Code

相关文章:

  • 2021-12-03
  • 2021-04-11
  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-15
  • 2022-01-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案