用户模块

实现:

  注册----登录    功能     验证

这里views.py使用类方法

from django.conf.urls import url
from users import views

urlpatterns = [
    url(r'^register', views.RigisterView.as_view(),name='register'),
]
class RigisterView(View):
    def get(self,request):
        return render(request,'register.html')
    def post(self,request):
        # 获取注册信息
        username = request.POST.get('user_name')
        password = request.POST.get('pwd')
        cpassword = request.POST.get('cpwd')
        email = request.POST.get('email')
        allow = request.POST.get('allow')
        # 数据处理 验证数据完整性
        if not all([username, password, cpassword, email, allow]):
            return render(request, 'register.html', {'errmsg': '数据不完整'})
        # 验证密码是否一致
        if password != cpassword:
            return render(request, 'register.html', {'errmsg': '密码不一致'})
        # 验证邮箱    # [w.-]+ 指一个或多个[w.-] 这样的字符,如 "aaa" "-ab" "c" "s._-l"
        if not re.match(r'^[a-z0-9][w.-]*@[a-z0-9-]+(.[a-z]{2,5}){1,2}$', email):
            return render(request, 'register.html', {'errmsg': '邮箱格式不正确'})
        # 验证是否勾选协议
        if allow != 'on':
            return render(request, 'register.html', {'errmsg': '请同意协议'})
        # 验证用户名是否存在(这里使用不重复户用名)
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            user = None  # 如果不存在 赋值为空
        if user:  # 如果存在
            return render(request, 'register.html', {'errmsg': '用名已存在'})
        # 保存到数据库 mysql
        user = User.objects.create_user(username, email, password)
        user.is_active = False  # 0 也可以 邮箱未验证设置为0
        user.save()
        # 邮箱激活
        # 获取token
        token = user.gennerate_activeate_token()
        # 发送邮件
        celery_send_email.delay(email,token)
        return render(request, 'login.html')

注册 ---------  功能    mysql.......celery.....redis........

这里使用    异步邮箱验证(celery)   前面有讲到 异步实现的方法  

    代理redis 库4的信息  

 

 

 

填写注册信息

 

mysql查看注册信息  

 

 

 

 

 收到激活链接

 

 

 接下来就是要实现邮箱验证  active  

from django.conf.urls import url
from users import views

urlpatterns = [
    url(r'^activate(?P<token>.+)/', views.activate,name='activate'),
]
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

def
activate(request,token): serializer = Serializer(settings.SECRET_KEY,3600) # 设置3600秒过期 try: json_str = serializer.loads(token) except: return HttpResponse('连接已过期') user_id = json_str['confirm']try: user = User.objects.get(id=user_id) except User.DoesNotExist: return HttpResponse('账号存在异常') #邮箱验证通过 修改 user.is_active = True user.save() return render(request,'login.html')

后期要用它来 登录验证 

 

 

 

.....

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/Py-beginner/p/13826014.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!