def register_form(request): if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): form.save() username = form.cleaned_data['username'] password = form.cleaned_data['password1'] user = authenticate(username=username, password=password) login(request, user) current_user = request.user data = UserProfile() data.user_id = current_user.id data.image = "images/users/user.png" data.save() messages.success(request, "Your account has been created") return HttpResponseRedirect('/') else: messages.warning(request, form.errors) return HttpResponseRedirect('/register') form = RegisterForm() context = { 'form': form, } return render(request, 'register_form.html', context)
def register(request): if request.method == 'GET': return render(request, 'register.html') if request.method == 'POST': # 获取数据 # username = request.POST.get('username') # password1 = request.POST.get('pwd1') # password2 = request.POST.get('pwd2') # if not (username and password2 and password1): # pass # if not(len(username) > 10 and len(username < 20)): # pass # if password1 != password2: # pass # 使用表单做验证,验证传递的参数是否满足条件 form = RegisterForm(request.POST) # is_valid(): 判断表单校验参数是否通过,如果通过则返回true,否则返回false if form.is_valid(): # 表示表单校验通过 # 1. 账号一定不存在 # 2. 密码和确认密码相等 username = form.cleaned_data.get('username') password = form.cleaned_data.get('pwd1') # make_password() User.objects.create_user(username=username, password=password) # return HttpResponse('注册账号成功') return HttpResponseRedirect(reverse('user:login')) # 表示表单校验失败 errors = form.errors return render(request, 'register.html', {'errors': errors})
def post(self, request): register_form = RegisterForm(request.POST) message = "[ERROR]请检查填写的内容!" if register_form.is_valid(): # 获取数据 username = register_form.cleaned_data['username'] password1 = register_form.cleaned_data['password1'] password2 = register_form.cleaned_data['password2'] email = register_form.cleaned_data['email'] if password1 != password2: # 判断两次密码是否相同 message = "两次输入的密码不同!" return render(request, 'register.html', locals()) else: same_name_user = models.User.objects.filter(username=username) if same_name_user: # 用户名唯一 message = '用户已经存在,请重新选择用户名!' return render(request, 'register.html', locals()) same_email_user = models.User.objects.filter(email=email) if same_email_user: # 邮箱地址唯一 message = '该邮箱地址已被注册,请使用别的邮箱!' return render(request, 'register.html', locals()) # 当一切都OK的情况下,创建新用户 new_user = models.User.objects.create() new_user.username = username new_user.password = hash_code(password1) new_user.email = email new_user.save() return redirect('/login/') # 自动跳转到登录页面 else: return render(request, 'register.html', locals())
def final_register(request): if request.method == 'POST': register_form = RegisterForm(request.POST) check_term = request.POST.get('term_check') # another method to get check box, or can use form.cleaned_data if check_term == 'on': stored_form = register_form if register_form.is_valid(): # dont wanna fill form again # username = register_form.cleaned_data['username'] register_form.clean() username = request.POST.get('username') password1 = request.POST.get('password1') password2 = request.POST.get('password2') email = request.POST.get('email') # check passwords are the same if password1 != password2: message = 'Not the same password' return render(request, 'user/register.html', {'message': message, 'register_form': stored_form}) else: same_name_user = User.objects.filter(username=username) # check user name if same_name_user: message = 'The user name was already existed' return render(request, 'user/register.html', {'message': message, 'register_form': stored_form}) same_email_user = User.objects.filter(email=email) if same_email_user: message = 'The email was registered, please use another one' return render(request, 'user/register.html', {'message': message, 'register_form': stored_form}) interest = Interest() user = User() additional_info = AdditionalInfo() additional_info.save() interest.save() user.additionalInfo = additional_info user.interest = interest user.email = email user.password = password1 user.username = username user.is_active = True user.save() # TODO: label as todo to ensure later check # the user was logged without verification of their email, may need change here request.session['is_login'] = True request.session['user_name'] = user.username return redirect('/user/index/') register_form = RegisterForm() message = 'There are something with the submitted form' return render(request, "oauth/oauth_register.html", locals())
def register(request): if request.method == 'POST': form = RegisterForm(request.POST, request.FILES) if form.is_valid(): user = form.save(commit=False) user.password = make_password(user.password) user.save() return redirect('/user/login/') else: return render(request, 'register.html', {'error': form.errors}) else: return render(request, 'register.html')
def test_register_password_not_match(self): """ Check if password not match with repassword. """ form = RegisterForm(data={ "username": "******", "first_name": "", "last_name": "", "email": "*****@*****.**", "password": "******", "repassword": "******" }) self.assertFalse(form.is_valid())
def test_register_email_exist(self): """ Check if register is valid. Do not valid the form. """ form = RegisterForm(data={ "username": "******", "first_name": "", "last_name": "", "email": "*****@*****.**", "password": "******", "repassword": "******" }) self.assertFalse(form.is_valid())
def test_register_username_exist(self): """ Check if username is already exists. Do not valid the form. """ form = RegisterForm(data={ "username": "******", "first_name": "", "last_name": "", "email": "*****@*****.**", "password": "******", "repassword": "******" }) self.assertFalse(form.is_valid())
def register(request): if request.method == 'GET': return render(request, 'register.html') if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): username = form.cleaned_data.get('username') password = make_password(form.cleaned_data.get('password')) User.objects.create(username=username, password=password) return HttpResponseRedirect(reverse('user:login')) errors = form.errors return render(request, 'register.html', {'errors': errors})
def register(request): if request.method == 'GET': return render(request, 'web/register.html') if request.method == 'POST': form = RegisterForm(request.POST) if form.is_valid(): username = form.cleaned_data.get('username') password = form.cleaned_data.get('pwd1') email = form.cleaned_data.get('email') # make_password() 加密密码 User.objects.create(username=username, password=make_password(password), email=email) # 返回登录 return HttpResponseRedirect(reverse('user:login')) return render(request, 'web/register.html', { 'form': form, 'data': form.data })
def post(self, request): """用户注册校验""" register_form = RegisterForm(request.POST) if register_form.is_valid(): # 获取前端数据 username = register_form.cleaned_data['user_name'] pwd = register_form.cleaned_data['pwd'] cpwd = register_form.cleaned_data['cpwd'] email = register_form.cleaned_data['email'] allow = request.POST.get('allow') # 校验参数是否完整 if not all([username, pwd, cpwd, email]): return render(request, 'register.html', context={ 'errmsg': '请填写全部', 'register_form': register_form }) # 校验用户是否存在 try: use = User.objects.get(username=username) except Exception as e: use = None if use: return render(request, 'register.html', context={ 'errmsg': '用户名已存在', 'register_form': register_form }) # 校验密码是否正确 if pwd != cpwd: return render(request, 'register.html', context={ 'errmsg': '两次密码不一致', 'register_form': register_form }) # 校验协议是否勾选 if allow != 'on': return render(request, 'register.html', context={ 'errmsg': '请勾选协议', 'register_form': register_form }) # 检查邮箱不能重复 try: user = User.objects.get(email=email) except Exception as e: user = None if user: return render(request, 'register.html', context={ 'errmsg': '邮箱已经被注册', 'register_form': register_form }) # 创建用户 user = User.objects.create_user(username=username, password=pwd, email=email) # 上边的方法会自动将 is_active 改为1 也就是邮箱激活状态, 所以下边需要修改一下 user.is_active = 0 user.save() # 加密用户信息生成激活token serializer = Serializer(SECRET_KEY, 3600) info = {'confirm': user.id} token = serializer.dumps(info) # 获取到的数据是bytes类型的,需要解码 token = token.decode() # 发送邮件 send_active_email.delay(email, token, user.username) return redirect(reverse('user:login')) else: return render(request, 'register.html', context={'register_form': register_form})