Example #1
0
def user_register(request):
    if request.method == 'GET':
        return render(request,'register.html')
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        
        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':'邮箱不合法!'})

        
        p = Passport.objects.check_passport(username=username)
        if p:
            return render(request,'register.html',{'errmsg':'用户名已存在!'})
        passport_per = Passport.objects.add_one_passport(username=username,password=password,email=email)

        serializer = Serializer(settings.SECRET_KEY,3600)
        token = serializer.dumps({'confirm':passport_per.id})
        token = token.decode()

        send_active_email.delay(token,username,email)        

        return redirect(reverse('index'))
Example #2
0
def register_handle(request):
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    if not all([username, password, email]):
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱不合法!'})

    p = Passport.objects.check_passport(username=username)

    if p:
        return render(request, 'users/register.html', {'errmsg': '用户名已存在!'})

    passport = Passport.objects.add_one_passport(username=username,
                                                 password=password,
                                                 email=email)
    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps({'confirm': passport.id})
    token = token.decode()
    send_mail(
        '尚硅谷书城用户激活',
        '',
        settings.EMAIL_FROM, [email],
        html_message=
        '<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>'
        % token)
    send_active_email.delay(token, username, email)
    return redirect(reverse('books:index'))
Example #3
0
def register_handle(request):
    # 进行用户注册处理
    #接收数据
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    #进行数据校验
    if not all([username, password, email]):
        #有数据为空
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱不合法!'})
    p = Passport.objects.check_passport(username=username)
    if p:
        return render(request, 'users/register.html', {'errmsg': '用户名已存在!'})
    #进行业务处理:注册,向账户系统添加账号
    # Passport.objects.create(username=username, password=password, email=email)
    passport = Passport.objects.add_one_passport(username=username,
                                                 password=password,
                                                 email=email)
    #生成激活的token itsdangerous
    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps({'confirm': passport.id})  # 返回bytes
    token = token.decode()
    #给用户的邮箱发激活邮件
    # send_mail('尚硅谷书城用户激活', '', settings.EMAIL_FROM, [email],html_message='<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>' % token)
    send_active_email.delay(token, username, email)

    return redirect(reverse('books:index'))
Example #4
0
def register_handle(request):
    # 获取表单提交信息

    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    # 对用户名进行校验
    if not username:  # 判空
        return render(request, 'users/register.html',
                      {'username_error': '用户名不能为空'})
    elif not re.match(r'^\w{5,20}$', username):  # 判格式
        return render(request, 'users/register.html',
                      {'username_error': '确认用户名长度在5-20间'})

    # 对密码进行校验
    if not password:
        return render(request, 'users/register.html', {'pwd_error': '密码不能为空'})
    elif not re.match(r'^\w{8,20}$', password):
        return render(request, 'users/register.html',
                      {'pwd_error': '确认密码在8-20间'})

    if not email:
        return render(request, 'users/register.html',
                      {'email_error': '邮箱不能为空'})
    elif not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                      email):
        return render(request, 'users/register.html',
                      {'email_error': '邮箱格式不对'})
    # 固定传参的方式
    # PassPort.objects.add_one_passport(username=username, password=password, email=email)
    # 普通传参的方式
    passport = PassPort.objects.add_one_passport(username, password, email)

    # Serializer-->序列化器,将settings.SECRET_KEY序列化为字典形式,并设置过期时间3600秒
    serializer = Serializer(settings.SECRET_KEY, 3600)
    # 反序列化-得到字节形式-->TODO 序列化并签名一个用户ID
    token = serializer.dumps({'confirm': passport.id})  # 返回bytes
    # 因为是字节形似所以要解码
    token = token.decode()

    # TODO 同步发送邮件
    # # 给用户的邮箱发激活邮件
    # send_mail('尚硅谷书城用户激活', '', settings.EMAIL_FROM, [email],
    # 		  html_message='<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>' % token)

    # TODO 异步发送邮件
    # 调用celery中的任务,并传参
    send_active_email.delay(token, username, email)

    # return HttpResponse('注册成功')
    return redirect(reverse('books:index'))
Example #5
0
def register_handle(request):
    '''进行用户注册处理'''
    # 接收数据
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    # 进行数据校验
    if not all([username, password, email]):
        # 有数据为空
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱不合法!'})

    p = Passport.objects.check_passport(username=username)

    if p:
        return render(request, 'users/register.html', {'errmsg': '用户名已存在!'})

    # 进行业务处理:注册,向账户系统中添加账户
    # Passport.objects.create(username=username, password=password, email=email)
    passport = Passport.objects.add_one_passport(username=username,
                                                 password=password,
                                                 email=email)

    # 生成激活的token itsdangerous
    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps({'confirm': passport.id})  # 返回bytes
    token = token.decode()

    # 定义邮箱发送内容
    html_message = '<p>尊敬的用户您好!</p>' \
                   '<p>感谢您使用嘟嘟读书城。[]~( ̄▽ ̄)~*</p>' \
                   '<p>您的邮箱为:%s 。请点击此链接激活您的账号:</p>' \
                   '<p>http://192.168.0.104:8000/user/active/%s/</p>' % (email, token)

    # 给用户的邮箱发激活邮件
    #send_mail('嘟嘟读书城用户激活', '', settings.EMAIL_FROM, [email], \
    #  html_message='<a href="http://202.196.73.159:8000/user/active/%s/"> \
    # 亲爱的嘟嘟读用户,这是您的注册激活链接-http://202.196.73.159:8000/user/active/</a>' % token)
    send_mail('嘟嘟读书城用户激活',
              '',
              settings.EMAIL_FROM, [email],
              html_message=html_message)
    send_active_email.delay(token, username, email)

    # 注册完,还是返回注册页。
    return redirect(reverse('books:index'))
Example #6
0
def register_handler(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    email = request.POST.get('email', '')

    if not all([username, password, email]):
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱命名规则错误'})

    p = Passport.object.check_passport(username=username)
    if p:
        # print('1111')
        return render(request, 'users/register.html', {'errmsg': '用户名已存在!'})

    passport = Passport.object.add_one_passport(username=username,
                                                password=password,
                                                email=email)
    #models中的Passport中的object为继承关系,只是新增加了一个object的属性,他自带的objects的其他方法还可以使用
    # Passport.object.filter()
    # Passport.objects.filter()

    # 发送注册的同步邮件确认
    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps(({'confirm': passport.id}))
    token = token.decode()
    # 同步发送邮件
    send_mail(
        '尚硅谷书城用户激活(同步邮件发送)',
        '',
        settings.EMAIL_FROM, [email],
        html_message=
        '<a href="http://127.0.0.1:8000/users/active/%s/">http://127.0.0.1:8000/users/active/</a>'
        % token)

    # 发送注册的异步邮件确认
    # 加上delay才算异步celery异步发送!!!
    send_active_email.delay(token, username, email)

    return redirect(reverse('books:index'))
Example #7
0
def register_handle(request):
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    if not all([username,password,email]):
        return render(request,'users/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,'users/register.html',{'errmsg':'邮箱不合法!'})

    try:
        passport = Passport.objects.add_one_passport(username=username, password=password, email=email)
    except Exception as e:
        print('e: ',e)
        return render(request,'users/register.html',{'errmsg':'用户名已经存在!'})
    serializer = Serializer(settings.SECRET_KEY,3600)
    token = serializer.dumps({'confirm':passport.id})
    token = token.decode()
    send_active_email.delay(token,username,email)
    return redirect(reverse('books:index'))
Example #8
0
def users_register(request):
    """用户注册页面"""
    if request.method == 'GET':
        return render(request, 'users/register.html')
    elif request.method == 'POST':
        """进行用户注册处理"""
        # 接受数据
        username = request.POST.get('user_name')
        password = request.POST.get('pwd')
        email = request.POST.get('email')

        if not all([username, password, email]):
            # 数据校验
            return render(request, 'users/register.html',
                          {'errmsg': '参数不能为空!'})

        if not re.match(r'[\w+]*@[\w+]', email):
            # email校验
            return render(request, 'users/register.html',
                          {'errmsg': '邮箱格式不对!'})

        p = Passport.objects.check_passport(username=username)

        if p:
            return render(request, 'users/register.html',
                          {'errmsg': '用户名已存在!'})
        passport = Passport.objects.add_one_passport(username=username,
                                                     password=password,
                                                     email=email)

        #  生成激活的token itsdangerous
        serializer = Serializer(settings.SECRET_KEY, 3600)
        token = serializer.dumps({'confirm': passport.id})  # 返回bytes
        token = token.decode()

        # 给用户的邮箱发送激活邮件
        # send_mail('尚硅谷书城用户激活', '', settings.EMAIL_FROM, [email], html_message='<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>' % token)
        send_active_email.delay(token, username, email)
        return redirect(reverse('user:login'))
Example #9
0
def register_handle(request):
    '''进行用户注册处理'''
    # 接收数据
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    # 进行数据校验
    if not all([username, password, email]):
        # 有数据为空
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱不合法!'})

    # 进行业务处理:注册,向账户系统中添加账户
    # Passport.objects.create(username=username, password=password, email=email)
    try:
        passport = Passport.objects.add_one_passport(username=username,
                                                     password=password,
                                                     email=email)
    except Exception as e:
        print("e: ", e)  # 把异常打印出来
        return render(request, 'users/register.html', {'errmsg': '用户名已存在!'})

    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps({'confirm': passport.id})  # 返回bytes
    token = token.decode()

    #send_mail('尚硅谷书城用户激活', '', settings.EMAIL_FROM, [email], html_message='<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>' % token)
    send_active_email.delay(token, username, email)

    # 注册完,还是返回注册页。
    return redirect(reverse('books:index'))
Example #10
0
def register_handle(request):
    '''进行用户注册处理'''
    #接收数据 - 获取的是页面表单提交过来的数据
    username = request.POST.get('user_name')
    password = request.POST.get('pwd')
    email = request.POST.get('email')

    #进行数据校验
    if not all([username, password, email]):
        #有数据为空返回到register.html页面
        return render(request, 'users/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, 'users/register.html', {'errmsg': '邮箱不合法'})

    #进行业务处理:注册,向账户系统中添加账户
    passport = Passport.objects.add_one_passport(username=username,
                                                 password=password,
                                                 email=email)

    #生成激活的token itsdangerous
    # serializer 序列化器
    serializer = Serializer(settings.SECRET_KEY, 3600)
    token = serializer.dumps({'confirm': passport.id})  # 返回bytes
    token = token.decode()

    #给用户的邮箱发激活邮件
    # #实现同步
    # send_mail('我的书城用户激活', '', settings.EMAIL_FROM, [email],
    # 		  html_message='<a href="http://127.0.0.1:8000/user/active/%s/">http://127.0.0.1:8000/user/active/</a>' % token)

    send_active_email.delay(token, username, email)  # 实现异步发送邮件

    #注册完毕,返回注册页面
    return redirect(reverse('books:index'))