示例#1
0
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)
示例#2
0
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})
示例#3
0
    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())
示例#4
0
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())
示例#5
0
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')
示例#6
0
 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())
示例#7
0
 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())
示例#8
0
 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())
示例#9
0
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})
示例#10
0
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
        })
示例#11
0
    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})