Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Profile(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE)
- email = models.EmailField()
- img = models.FileField(upload_to='media/', blank=True, null=True)
- def __str__(self):
- return self.user.username
- @receiver(post_save, sender=User)
- def update_user_profile(sender, instance, created, **kwargs):
- if created:
- Profile.objects.create(user=instance)
- instance.profile.save()
- def signup(request):
- if request.method == 'POST':
- form = SignUpForm(request.POST)
- if form.is_valid():
- user = form.save()
- user.refresh_from_db() # load the profile instance created by the signal
- user.profile.email = form.cleaned_data.get('email')
- user.profile.img = form.cleaned_data.get('img')
- user.save()
- raw_password = form.cleaned_data.get('password1')
- user = authenticate(username=user.username, password=raw_password)
- login(request, user)
- return redirect('home')
- else:
- form = SignUpForm()
- return render(request, 'tforum/signup.html', {'form': form})
- class SignUpForm(UserCreationForm):
- email = forms.EmailField(help_text='Required.')
- img = forms.FileField(help_text='Upload Image')
- class Meta:
- model = User
- fields = ('username', 'email', 'img', 'password1', 'password2', )
- <form method="post" enctype="multipart/form-data">
- {% csrf_token %}
- {% for field in form %}
- <p>
- {{ field.label_tag }}<br>
- {{ field }}
- {% if field.help_text %}
- <small style="color: grey">{{ field.help_text }}</small>
- {% endif %}
- {% for error in field.errors %}
- <p style="color: red">{{ error }}</p>
- {% endfor %}
- </p>
- {% endfor %}
- <button type="submit">Sign up</button>
Add Comment
Please, Sign In to add comment