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=True, widget=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=False, widget=forms.PasswordInput(attrs={'autocomplete': 'current-password', 'class':'form-control'}))
# Password Change
class MyPasswordChangeForm(PasswordChangeForm):
old_password = forms.CharField(label=_("Old Password"), strip=False, widget=forms.PasswordInput(attrs={'autocomplete': 'current-password', 'autofocus':True, 'class':'form-control'}))
new_password1 = forms.CharField(label=_("New Password"), strip=False, widget=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=False, widget=forms.PasswordInput(attrs={'autocomplete': 'new-password','class':'form-control'}))
# Password Rest
class MyPasswordResetForm(PasswordResetForm):
email = forms.EmailField(label=_("Email"), max_length=254, widget=forms.EmailInput(attrs={'autocomplete': 'email', 'class':'form-control'}))
class MySetPasswordForm(SetPasswordForm):
new_password1 = forms.CharField(label=_("New Password"), strip=False, widget=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=False, widget=forms.PasswordInput(attrs={'autocomplete': 'new-password','class':'form-control'}))
views.py
from .forms import CustomerRegistrationForm
class CustomerRegistrationView(View):
def get(self, request):
form = CustomerRegistrationForm()
return render(request, 'customerregistration.html', {'form':form})
def post(self, request):
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
Post a Comment