Django - Create User Sign Up
#views.py from django.shortcuts import render, redirect # Create your views here. from django.contrib.auth import login, authenticate from myapp.forms import SignUpForm def signup(request): if request.method == 'POST': form = SignUpForm(request.POST) if form.is_valid(): form.save() username = form.cleaned_data.get('username') raw_password = form.cleaned_data.get('password1') user = authenticate(username=username, password=raw_password) login(request, user) return redirect('/') else: form = SignUpForm() return render(request, 'signup.html', {'form': form}) def home(request): return render(request, 'home.html')
#forms.py from django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User class SignUpForm(UserCreationForm): first_name = forms.CharField(max_length=30, required=False, help_text='Optional.') last_name = forms.CharField(max_length=30, required=False, help_text='Optional.') email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.') class Meta: model = User fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )
#urls.py from django.contrib import admin from django.urls import path from myapp import views urlpatterns = [ path('admin/', admin.site.urls), path('signup', views.signup), path('', views.home), ]<!DOCTYPE html> <html lang="en">
//templates/signup.html <head> <meta charset="UTF-8"> <title>Django - Create User Sign Up</title> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <h2>Django - Create User Sign Up</h2> <form method="post"> {% csrf_token %} <!-- {{ form.as_p }} --> {% 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> </form> </div> </div> </div> </body> </html>