from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from bootstrap_modal_forms.mixins import PopRequestMixin, CreateUpdateAjaxMixin
class CustomUserCreationForm(PopRequestMixin, CreateUpdateAjaxMixin,
UserCreationForm):
class Meta:
model = User
fields = ['username', 'password1', 'password2']
signup.html
{% load widget_tweaks %}
{% csrf_token %}
Sign up
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
{% for field in form %}
{% render_field field class="form-control" placeholder=field.label %}
{% for error in field.errors %}
{{ error }}
{% endfor %}
{% endfor %}
views.py
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.views import generic
from bootstrap_modal_forms.mixins import PassRequestMixin
from .forms import CustomUserCreationForm
class SignUpView(PassRequestMixin, SuccessMessageMixin, generic.CreateView):
form_class = CustomUserCreationForm
template_name = 'accounts/signup.html'
success_message = 'Success: Sign up succeeded. You can now Log in.'
success_url = reverse_lazy('index')
urls.py
from django.urls import path
from . import views
app_name = 'accounts'
urlpatterns = [
path('signup/', views.SignUpView.as_view(), name='signup')
]