要实现忘记密码功能,您需要进行以下修改:

  1. 添加忘记密码链接到登录页面。
  2. 创建密码丢失修改页面。
  3. 创建密码修改页面。
  4. 编写相应的视图函数来处理密码丢失修改和密码修改逻辑。
  5. 编写发送验证信息到邮箱的逻辑。

以下是对您提供的模板的修改,以添加忘记密码链接和相应的修改页面:

{% extends 'base.html' %}
{% load widget_tweaks %}
{% block content %}
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-4 col-md-6 col-sm-10">
<h2 class="text-center mt-4 mb-3">登录</h2> {# 添加垂直内边距 #}
<hr>
{% if error_message %}
<div class="alert alert-danger">{{ error_message }}</div>
{% endif %}
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="username" placeholder="Enter your username">
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Enter your password">
</div>
<div class="form-group">
<a href="{% url 'password_reset' %}" class="btn btn-link">忘记密码?</a>
</div>
<div class="form-group text-center">
<button type="submit" class="btn btn-primary btn-block">登录</button>
<a href="{% url 'register' %}" class="btn btn-link">注册</a>
</div>
</form>
</div>
</div>
</div>
{% endblock %}
{% block menu %}
{% endblock %}
  1. 创建密码重置 URL 路由:
# urls.py
from django.urls import path
from django.contrib.auth import views as auth_views urlpatterns = [
# 其他URL路由
path('reset-password/', auth_views.PasswordResetView.as_view(), name='password_reset'),
path('reset-password/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset-password/confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset-password/complete/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]
  1. 创建密码重置模板: 在您的模板目录下创建以下模板文件:
  • registration/password_reset_form.html: 重置密码表单模板
  • registration/password_reset_email.html: 发送重置密码邮件模板
  • registration/password_reset_done.html: 密码重置请求已发送确认页面模板
  • registration/password_reset_confirm.html: 重置密码确认页面模板
  • registration/password_reset_complete.html: 密码重置完成页面模板

您可以参考 Django 文档中关于这些模板的说明。

  1. 创建相应的视图函数(这些视图函数已经由 Django 的内置视图处理程序提供,无需自己编写)。

  2. 启用邮件发送功能: 在您的 Django 项目设置中配置邮件发送设置,以便 Django 能够发送重置密码链接到用户的注册邮箱。

这样,当用户点击“忘记密码”链接时,他们将被引导到密码重置页面,并且在输入注册邮箱后,系统将向该邮箱发送重置密码的链接。

下面是如何继续创建相应的视图函数以及启用邮件发送功能的步骤:

  1. 创建密码重置视图:
# views.py
from django.contrib.auth.forms import PasswordResetForm
from django.contrib.auth.views import PasswordResetView class CustomPasswordResetView(PasswordResetView):
email_template_name = 'registration/password_reset_email.html'
form_class = PasswordResetForm
template_name = 'registration/password_reset_form.html'
success_url = reverse_lazy('password_reset_done')

在这个视图中,我们使用了 Django 的内置视图 PasswordResetView,并且指定了相应的模板和成功后的重定向 URL。

  1. 启用邮件发送功能:

在您的 Django 项目设置文件中,配置邮件发送设置,以便 Django 能够发送重置密码链接到用户的注册邮箱。您可以使用 Django 内置的邮件配置或者第三方库如 django-smtp-ssl 等。

# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'your_email_host' # 例如:smtp.gmail.com
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@example.com'
EMAIL_HOST_PASSWORD = 'your_email_password'
确保将上述设置中的 your_email_hostyour_email@example.comyour_email_password 替换为您的实际邮箱设置。
  1. 配置 URL 路由:

在您的 urls.py 中,引入我们刚刚创建的视图,并配置 URL 路由。

# urls.py
from django.urls import path
from .views import CustomPasswordResetView urlpatterns = [
# 其他URL路由
path('reset-password/', CustomPasswordResetView.as_view(), name='password_reset'),
# 其他URL路由
]
现在,当用户点击“忘记密码”链接时,他们将被引导到密码重置页面,输入注册邮箱后,系统将向该邮箱发送重置密码的链接。
 
 
 
 

Django集成的密码找回功能的更多相关文章

  1. 轻松搭建CAS 5.x系列(5)-增加密码找回和密码修改功能

    概述说明 CAS内置了密码找回和密码修改的功能: 密码找回功能是,系统会吧密码重置的连接通过邮件或短信方式发送给用户,用户点击链接后就可以重置密码,cas还支持预留密码重置的问题,只有回答对了,才可以 ...

  2. django 开发忘记密码通过邮箱找回功能

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找 ...

  3. java web实现 忘记密码(找回密码)功能及代码

    java web实现 忘记密码(找回密码)功能及代码 (一).总体思路 (二).部分截图 (三).部分代码 (一).总体思路: 1.在 找回密码页面 录入 姓名.邮箱和验证码,录入后点击[提交]按钮, ...

  4. C# Email邮件发送,功能是密码找回或者重置功能。

    原文:C# Email邮件发送,功能是密码找回或者重置功能. 最近根据公司需求,写个邮件发送.   这里面的传入的地址信息的参数都是经过加密的.  主要是保证用户信息的安全. 帮助类   using ...

  5. Django集成百度富文本编辑器uEditor

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 首先从ueEditor官网下载最新版本的包, ...

  6. Atitit 修改密码的功能流程设计 attilax总结

    Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...

  7. (转)asp.net实现忘记密码找回的代码

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  8. Django实现用户密码重置

    使用Django内置的认证视图实现简单的通过邮箱重置密码的功能版本:django 1.11 在django.contrib.auth.views中提供了四个类视图用于密码重置 class Passwo ...

  9. 基于django的自定义简单session功能

    基于django的自定义简单session功能 简单思路: 1.建立自定义session数据库 2.登入时将用户名和密码存入session库 3.将自定义的随机session_id写入cookie中 ...

  10. Django集成OpenLDAP认证

    本文详细介绍了django-auth-ldap的使用方法,参数含义,并提供了示例代码 版本说明 Django==2.2 django-auth-ldap==1.7.0 集成过程 Django集成LDA ...

随机推荐

  1. OpenAI“杀疯了”,GPT–4o模型保姆级使用教程!一遍就会!

    5月14日凌晨1点,OpenAI发布了名为GPT-4o 最新的大语言模型,再次引领了人工智能领域的又一创新浪潮,让整个行业都为之震动. 据OpenAI首席技术官穆里-穆拉提(Muri Murati)表 ...

  2. 【U8】快速获取u8单据的类型key值

    win10下 打开 写字板,直接搜索栏搜索写字板打开. 登录u8,找到需要的单据,以基础档案存货为例,打开存货档案界面. 按住键盘ctrl+shift,鼠标左键单据单据上的某个按钮,以新增按钮为例,单 ...

  3. ASP.NET Core SignalR .NET 客户端

    项目 2022/11/29 13 个参与者 反馈 通过 ASP.NET Core SignalR .NET 客户端库可以从 .NET 应用与 SignalR 中心进行通信. 查看或下载示例代码(如何下 ...

  4. 神经网络常见参数解释:epoch、batch、batch size、step、iteration

      本文介绍在机器学习.深度学习的神经网络模型中,epoch.batch.batch size.step与iteration等名词的具体含义.   epoch:表示将训练数据集中的所有样本都过一遍(且 ...

  5. 8.18考试总结(NOIP模拟43)[第一题·第二题·第三题·第四题]

    愿你和重要的人,在来日重逢. 前言 题目名字起的很随意... 这天 Luogu 的运势好像是大凶(忌:打模拟赛,注意报零). 但是考得还不错,拿到了这么多场模拟赛以来第二三个场上AC. 所以说,我爱大 ...

  6. P2868

    Sightseeing Cows G 我们先考虑如何求平均乐趣值. 1.总乐趣为 \(\sum^n_{i = 1}f_i \times s_i\),其中 \(f_i\) 为第 \(i\) 个点的乐趣值 ...

  7. Ubuntu安装VMware tools后不起作用

    复制和立即适应客户机不起作用. 解决: 1)不需要卸载 2)命令行执行sudo apt-get install open-vm-tools-desktop 3)可能会提示apt-get update或 ...

  8. 查看mongo的bson数据文件

    转载请注明出处: BSON(Binary Serialized Document Format)是MongoDB中用于存储和传输数据的一种二进制形式的存储格式,它基于JSON格式,但比JSON更松散, ...

  9. 一次phoniex表查询报出 org.apache.hadoop.hbase.NotServingRegionException

    org.apache.hadoop.hbase.NotServingRegionException: SYSTEM.STATS,,1607503004410.334266e1a9b7d9859dbfb ...

  10. 制作tomcat镜像

    本篇文章介绍用Dockerfile的方式构建Tomcat镜像,请保证安装了Docker环境. 首先创建/opt/tomcat目录,后续步骤都在该目录下进行操作. 准备好Jdk和Tomcat安装文件,放 ...