Exemplo n.º 1
0
def login(request):
    # 之后添加功能:如果用户已经登录,重定向
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            data = form.clean()
            username = data['username']
            if '@' in username:  # 邮箱也可以登录
                email = username
            else:
                user = MyUser.objects.get(username=username)
                email = user.email

            user = authenticate(email=email, password=data['password'])
            if user is not None:
                auth_login(request, user)
                # 这里还可以更进一步的写,这里先简单的重定向
                return redirect('/')  # 登录成功,跳转回首页
            else:
                messages.error(request, '密码不正确!')
                return render(request,
                              'users/login.html',
                              context={'form': form})
                # use an explicit context_dictionary, instead of passing locals()
    else:
        form = LoginForm()

        return render(request, 'users/login.html', {'form': form})
Exemplo n.º 2
0
    def test_login_form_clean_is_valid_sucess(self):
        """Users appliation login form clean method success test
        Check LoginForm's clean method return exist user data
        """
        user = {"email": "*****@*****.**", "password": "******"}
        form = LoginForm(user)

        if form.is_valid():
            self.assertEqual(user, form.clean())
Exemplo n.º 3
0
def test_login_form_clean_method():
    # form should no be valid because user does not exist
    creds = {"username": "******", "password": "******"}
    form = LoginForm(data=creds)

    assert not form.is_valid()

    # user and request setup
    user = UserModel.objects.create_user(
        username="******", password="******", email="*****@*****.**"
    )
    request = RequestFactory()
    request.user = user
    form = LoginForm(request=request, data=creds)

    # form should be valid because user exist in DB
    assert form.is_valid()
    # form.clean should return cleaned data as a dict
    assert form.clean() == creds
    # calling form.get_user should return authenticated user
    assert form.get_user() == user