Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.conf import settings.AUTH_USER_MODEL
- from django.db.models.signals import post_save
- from django.dispatch import receiver
- class Profile(models.Model):
- user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
- bio = models.TextField(foo)
- location = models.CharField(foo)
- # Override save method
- # Run after the method is saved to add signal functionality below
- def save(self, *args, **kwargs):
- super().save(*args, **kwargs)
- @receiver(post_save, sender=User)
- def create_user_profile(sender, instance, created, **kwargs):
- if created:
- Profile.objects.create(user=instance)
- else:
- instance.profile.save()
- from django import forms
- from django.contrib.auth import get_user_model
- from django.forms import ModelForm
- from .models import Profile
- Profile = get_user_model()
- class UserRegisterForm(forms.ModelForm):
- email = forms.EmailField(foo)
- first_name = forms.CharField(foo)
- last_name = forms.CharField(foo)
- password = forms.CharField(foo)
- password2 = forms.CharField(foo)
- class Meta:
- model = Profile
- fields = [
- 'username',
- 'first_name',
- 'last_name',
- 'email',
- 'password1',
- 'password2'
- ]
- from django.shortcuts import render, redirect
- from django.contrib.auth import get_user_model
- from .forms import UserRegisterForm
- from .models import Profile
- from django.conf import settings
- def register(request):
- next = request.GET.get('next')
- form = UserRegisterForm(request.POST or None)
- if form.is_valid():
- user = form.save(commit=False)
- password = form.cleaned_data.get('password')
- user.set_password(password)
- user.save()
- new_user = authenticate(username=user.username, password=password)
- login(request, new_user)
- if next:
- return redirect(next)
- return redirect('accounts:login')
- context = {
- 'form': form,
- }
- return render(request, "accounts/register.html", context)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement