Extent User Model
1 2 3 4 5 6 7 8 9 10 11 |
class Profile(Model): user = models.OneToOneField(settings.AUTH_USER_MODEL) def post_save_user_model_receiver(sender, instance, created, *args, **kwargs): if created: try: Profile.objects.create(user=instance) except: pass post_save.connect(post_save_user_model_receiver, sender=settings.AUTH_USER_MODEL) |
User login
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# forms.py # Method A def clean(self, *args, **kwargs): username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = User.objects.filter(username=username).first() if not user: raise forms.ValidationError('Invalid credentials') else: if user.check_password(password): raise forms.ValidationError('Invalid credentials') return super(UserLoginForm, self).clean(*args, **kwargs) #Method B from django.contrib.auth import authenticate def clean(self, *args, **kwargs): username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) if not user: raise forms.ValidationError('Invalid credentials') return super(UserLoginForm, self).clean(*args, **kwargs) # views.py from django.contrib.auth import login, get_user_model User = get_user_model() def user_login(request, *args, **kwargs): template = 'accounts/login.html' form = UserLoginForm(request.POST or None) if form.is_valid(): user_obj = User.objects.get(username__iexact=form.cleaned_data.get('username')) login(request, user_obj) return HttpResponseRedirect('/') context = { 'form': form } return render(request, template, context) |
Third Part Packages
- Django Registration Redux
- Django All Auth
- Python Social Auth