xxxxxxxxxx
# 1. Configure email settings in your Django project's settings.py file
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'your_email_host'
EMAIL_PORT = 'your_email_port'
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email_username'
EMAIL_HOST_PASSWORD = 'your_email_password'
# 2. Create a password reset view in your views.py file
from django.contrib.auth.views import PasswordResetView
class MyPasswordResetView(PasswordResetView):
template_name = 'accounts/password_reset.html' # Customize the reset password template
email_template_name = 'accounts/password_reset_email.html' # Customize the password reset email template
subject_template_name = 'accounts/password_reset_subject.txt' # Customize the subject of the password reset email
success_url = '/accounts/reset/done/' # Customize the URL to redirect after a successful password reset
# 3. Create the necessary URL mappings in your urls.py file
from django.urls import path
from .views import MyPasswordResetView
urlpatterns = [
# ... other URL patterns ...
path('reset/', MyPasswordResetView.as_view(), name='password_reset'),
path('reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/complete/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
# ... other URL patterns ...
]
# 4. Create the necessary templates (password_reset.html, password_reset_email.html, password_reset_subject.txt) to customize the appearance and content of the password reset functionality.
This is an overview of Password reset with email, after Django2.1 and so on
xxxxxxxxxx
from django.urls import path, re_path, reverse_lazy, include
from django.contrib.auth import views as auth_views
from . import views
app_name = 'user_accounts'
urlpatterns = [
path('signup/', views.UserSignUpView.as_view(), name='signup'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('login/', auth_views.LoginView.as_view(template_name='user_accounts/login.html'), name='login'),
path('password-change/', auth_views.PasswordResetView.as_view(template_name='user_accounts/password_reset.html', email_template_name='user_accounts/password_reset_email.html', subject_template_name='user_accounts/password_reset_subject.txt', success_url = reverse_lazy('user_accounts:password_reset_done')), name='password_reset'),
path('password-change/done/', auth_views.PasswordResetDoneView.as_view(template_name='user_accounts/password_reset_done.html'), name='password_reset_done'),
#re_path(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.PasswordResetConfirmView.as_view(template_name='user_accounts/password_reset_confirm.html'), name='password_reset_confirm'),
path('password-change/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='user_accounts/password_reset_confirm.html', success_url = reverse_lazy('user_accounts:password_reset_complete')), name='password_reset_confirm'),
path('password-change/complete/', auth_views.PasswordResetCompleteView.as_view(template_name='user_accounts/password_reset_complete.html'), name='password_reset_complete')
]