Django_(Login, Registration...)

forms.py 


from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm, UsernameField, PasswordResetForm, SetPasswordForm
from django.contrib.auth import password_validation
from django.utils.translation import gettext, gettext_lazy as _
from django.contrib.auth.models import User


# Customer Registration
class CustomerRegistrationForm(UserCreationForm):

  password1 = forms.CharField(label='Password'widget=forms.PasswordInput(attrs={'class':'form-control'}))
  password2 = forms.CharField(label='Confirm Password (again)'widget=forms.PasswordInput(attrs={'class':'form-control'}))
  email = forms.CharField(required=Truewidget=forms.EmailInput(attrs={'class':'form-control'}))
  
  class Meta:
    model = User
    
    fields = ['username''email''password1''password2']

    labels = {'email''Email'}
    widgets = {'username':forms.TextInput(attrs={'class':'form-control'})}

# Customer Login
class LoginForm(AuthenticationForm):
  username = UsernameField(widget=forms.TextInput(attrs={'autofocus'True'class':'form-control'}))
  
  password = forms.CharField(label=_("Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''current-password''class':'form-control'}))

# Password Change
class MyPasswordChangeForm(PasswordChangeForm):
  old_password = forms.CharField(label=_("Old Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''current-password''autofocus':True,  'class':'form-control'}))
  new_password1 = forms.CharField(label=_("New Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''new-password''class':'form-control'}), help_text=password_validation.password_validators_help_text_html())
  new_password2 = forms.CharField(label=_("Confirm New Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''new-password','class':'form-control'}))

# Password Rest
class MyPasswordResetForm(PasswordResetForm):

 email = forms.EmailField(label=_("Email"), max_length=254widget=forms.EmailInput(attrs={'autocomplete''email''class':'form-control'}))


class MySetPasswordForm(SetPasswordForm):
  new_password1 = forms.CharField(label=_("New Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''new-password''class':'form-control'}), help_text=password_validation.password_validators_help_text_html())
  new_password2 = forms.CharField(label=_("Confirm New Password"), strip=Falsewidget=forms.PasswordInput(attrs={'autocomplete''new-password','class':'form-control'}))


views.py

from .forms import CustomerRegistrationForm



class CustomerRegistrationView(View):
  def get(selfrequest):
    form = CustomerRegistrationForm()
    return render(request, 'customerregistration.html', {'form':form})

  def post(selfrequest):
    form = CustomerRegistrationForm(request.POST)
    if form.is_valid():
      messages.success(request, 'Congratulations!! Registered Successfully.')
      form.save()
    return render(request, 'customerregistration.html', {'form':form})

urls.py


from django.contrib.auth import views as auth_views
from app.forms import LoginForm, MyPasswordChangeForm, MyPasswordResetForm, MySetPasswordForm
from app import urls



urlpatterns = [

    path('registration/', views.CustomerRegistrationView.as_view(), name='customerregistration'),
    path('accounts/login/', auth_views.LoginView.as_view(template_name='app/login.html'authentication_form=LoginForm), name='login'),
    path('logout/', auth_views.LogoutView.as_view(next_page='login'), name='logout'),
    path('passwordchange/', auth_views.PasswordChangeView.as_view(template_name='app/passwordchange.html'form_class=MyPasswordChangeForm, success_url='/passwordchangedone/'), name='passwordchange'),
    path('passwordchangedone/', auth_views.PasswordChangeDoneView.as_view(template_name='app/passwordchangedone.html'), name='passwordchangedone'),
    path("password-reset/", auth_views.PasswordResetView.as_view(template_name='app/password_reset.html'form_class=MyPasswordResetForm), name="password_reset"),
    path("password-reset/done/", auth_views.PasswordResetDoneView.as_view(template_name='app/password_reset_done.html'), name="password_reset_done"),
    path("password-reset-confirm/<uidb64>/<token>/", auth_views.PasswordResetConfirmView.as_view(template_name='app/password_reset_confirm.html'form_class=MySetPasswordForm), name="password_reset_confirm"),
    path("password-reset-complete/", auth_views.PasswordResetCompleteView.as_view(template_name='app/password_reset_complete.html'), name="password_reset_complete"),
]


setings.py

LOGIN_REDIRECT_URL = '/profile/'

Comments