Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Django problem with creating user then logging them in
- def signup(request):
- if request.method == 'POST': # If the form has been submitted...
- p = request.POST
- if not request.user.is_authenticated():
- form = UserForm(request.POST) # A form bound to the POST data
- if form.is_valid(): # All validation rules pass
- # Process the data in form.cleaned_data
- # ...
- form.save()
- user=authenticate(username=p['username'],password=p['password'])
- login(request,user)
- return HttpResponseRedirect('/') # Redirect after POST
- Traceback:
- File "/Library/Python/2.6/site-packages/django/core/handlers/base.py" in get_response
- 100. response = callback(request, *callback_args, **callback_kwargs)
- File "REDACTED/views.py" in signup
- 19. login(request,user)
- File "/Library/Python/2.6/site-packages/django/contrib/auth/__init__.py" in login
- 71. user.save()
- File "/Library/Python/2.6/site-packages/django/contrib/auth/models.py" in save
- 430. raise NotImplementedError
- Exception Type: NotImplementedError at /signup/
- Exception Value:
- user = UserForm.save()
- login(request, user)
- user.passord = password
- username = form.cleaned_data['username']
- password = form.cleaned_data['password']
- user = User.objects.create(username=username)
- if password:
- user.set_password(password)
- else:
- user.set_unusable_password()
- user.save()
- username = form.cleaned_data['username']
- password = form.cleaned_data['password']
- hashed_password = hashlib.md5(password).hexdigest()
- user = authenticate(username=username, password=hashed_password)
- if user:
- login(request, user)
- return HttpResponseRedirect('/')
- # forms.py
- from django import forms
- class LoginForm(forms.Form):
- username = forms.CharField(max_length=20)
- password = forms.CharField(widget=forms.PasswordInput)
- # views.py
- import hashlib
- username = form.cleaned_data['username']
- password = form.cleaned_data['password']
- hashed_password = hashlib.md5(password).hexdigest()
- # assuming username is unique
- User.objects.get_or_create(username=username, defaults={'password': hashed_password, 'is_active': True})
- # If password doesn't work, try hashed_password next
- user = authenticate(username=username, password=password)
- if user:
- login(request, user)
- return HttpResponseRedirect('/')
Add Comment
Please, Sign In to add comment