I want test login redirect, but I use client post username and password, Login-authenticate failed, I adjusted for a long time. I don't know why!
view:
def index(request, **kwargs):
username = kwargs.get('username', 'anyone')
return render(request, "index.html", {'username': username})
def login(request):
"""user sign in"""
if request.method == "GET":
form = LoginForm()
return render(request, "login.html", {'uf': form})
else:
form = LoginForm(request.POST)
if form.is_valid():
username = request.POST.get("username")
password = request.POST.get("password")
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
request.session['uid'] = user.id
return render(request, 'index.html', {'username': username})
else:
return render(request,
'login.html',
{'form': form, 'password_is_wrong': True, 'error': 'Pls, Resubmit'})
else:
return render(request, 'login.html', {'form': form})
test:
def test_login_right(self, username='admin', password='zg123456'):
""" POST right username or password """
setup_test_environment()
client = Client(enforce_csrf_checks=False)
url = '/login/'
response = self.client.post(url,
data={'username': username,
'password': password},
secure=True,
follow=True)
status_code = response.status_code
self.assertNotIn(str(status_code)[0], ['4', '5'])
self.assertIn('Welcome', response.content.decode('utf8'))
I find do test, auth.authenticate return None, but I use brower authenticate return not None, I don't know why, a protection mechanism? I must use client.login func ?
Aucun commentaire:
Enregistrer un commentaire