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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))