python之--学习模型类view,注册类

版权声明:随手笔记,请勿模仿 https://blog.csdn.net/qq_20681909/article/details/84972483

首先要用到包from 

from django.views.generic import View   #模型类

views.py内容

# 用户注册类
class RegisterView(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')
        email = request.POST.get('email')
        allow = request.POST.get('allow')

        # 进行数据校验
        if not all([username, password, email]):
            # 数据不完整
            return render(request, 'register.html', {'errmsg': '数据不完整'})

        # 校验邮箱
        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': '用户名已存在'})

        # 进行业务处理: 进行用户注册
        user = User.objects.create_user(username, email, password)
        user.is_active = 0
        user.save()

        # 发送激活邮件,包含激活链接: http://127.0.0.1:8000/user/active/3
        # 激活链接中需要包含用户的身份信息, 并且要把身份信息进行加密

        # 加密用户的身份信息,生成激活token
        serializer = Serializer(settings.SECRET_KEY, 3600)
        info = {'confirm': user.id}
        # info = {'confirm':1}
        token = serializer.dumps(info) # bytes
        token = token.decode()

        # 发邮件
        send_register_active_email.delay(email, username, token)
        # , html_message = html_message
        # 返回应答, 跳转到首页
        return redirect(reverse('goods:index'))

 myapp.urls.py

# url(r'^register$', views.register, name='register'), # 注册
# url(r'^register_handle$', views.register_handle, name='register_handle'), # 注册处理

url(r'^register$', RegisterView.as_view(), name='register'), # 注册
url(r'^active/(?P<token>.*)$', ActiveView.as_view(), name='active'), # 用户激活
url(r'^login$', LoginView.as_view(), name='login'), # 登录

和上面注册的函数用法一样,类名加上as_view(),可以替代单个函数

猜你喜欢

转载自blog.csdn.net/qq_20681909/article/details/84972483