首页 > 其他分享 >Django集成的密码找回功能

Django集成的密码找回功能

时间:2024-04-24 09:55:05浏览次数:22  
标签:集成 reset 密码找回 重置 Django 密码 password 模板

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

  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 = '[email protected]'
EMAIL_HOST_PASSWORD = 'your_email_password'

 

确保将上述设置中的 your_email_host[email protected]your_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路由
]

 

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

标签:集成,reset,密码找回,重置,Django,密码,password,模板
From: https://www.cnblogs.com/beichengshiqiao/p/18154425

相关文章

  • Django+forms+html
    在Django中,Form类通常通过继承django.forms.Form或django.forms.ModelForm来定义。当你定义一个表单类时,通常使用Form或ModelForm类,并使用各种字段类如CharField、IntegerField等来定义字段。form.as_<method>()指的是Django表单类提供的用于以不同格式呈现表单的方法。以下是一......
  • 基于 Flink CDC 打造企业级实时数据集成方案
    基于FlinkCDC打造企业级实时数据集成方案本文整理自阿里云智能Flink数据通道负责人,FlinkCDC开源社区负责人,FlinkPMCMember&Committer徐榜江在2023云栖大会开源大数据专场的分享。本篇内容主要分为三部分:一、CDC数据实时集成的挑战二、FlinkCDC核心技术解读......
  • django种列表输出样式问题,带[]和不带的方法
    比如入库的时候,同一个用户名,多个订单,入库的时候users_list=list(unique_users)OrderList.objects.create(order_des=f"项目名称:{title},账号:{','.join(users_list)},共计新开{selected_ips_count}个",)比如账号不同显示入库的格式和同一个账号入库的格式不一样项目名称:xxx,......
  • Django使用MSSQL创建数据表
    Django使用MSSQL创建数据表Django使用MSSQL创建数据表Django是一个基于Python的开源Web应用框架,它提供了一套完整的开发工具和库,用于快速构建高效、安全的Web应用程序。MSSQL是一种关系型数据库管理系统,由Microsoft开发和维护。在Django中使用MSSQL创建数据表,需要进行以下步骤:......
  • Django常用命令
    安装django:pipinstalldjango安装依赖pipinstall-rrequirements.txt创建项目:django-adminstartprojectproject_name创建应用django-adminstartappapp_name运行端口:pythonmanage.pyrunserverpythonmanage.pyrunserver8080创建数据库命令python3.9manage.......
  • .Net WebAPI程序集成CAS单点登录-API方式(不使用DotNetCasClient)
    以下是ashx一般处理程序的示例,且cas登录单独放到了一个按钮中:1、登录按钮(js)- console.log("cos登录");varoriginStr=window.location.origin;window.location.href="https://cas.your.com/cas/login?service="+originStr+"/WebUI/Admin......
  • django 数据表关系学习和应用
    数据表有一对一,一对多,多对多,关系在django中如何实现?django提供了三种最常见的数据库关联关系方法:多对一,多对多,一对一多对一关联:定义多对一关联关系,使用django.db.model.ForeignKey类,就和其它 Field 字段类型一样,只需要在你模型中添加一个值为该类的属性。For......
  • 集成SwiftLint
    1.pod集成代码pod'SwiftLint'2.添加JS代码如下同时保证将JS放在Sources之前3.cd到项目根目录下,创建yml文件touch.swiftlint.yml4.将规则内容粘贴到yml中#Yamldocreference:#https://github.com/realm/SwiftLint#disable-rules-in-code#https://github.......
  • Django的ORM操作
    ORM【一】什么是ORMORM是一种将对象与关系型数据库之间的映射的技术,主要实现了以下三个方面的功能:数据库中的表映射为Python中的类数据库中的字段映射为Python中的属性数据库中的记录映射为Python中的实例ORM的主要优点是可以减少开发人员编写重复的SQL语句的时间和工作......
  • Django的路由系统
    Django的路由系统【1】URL配置URL调度器|Django文档|Django(djangoproject.com)URL配置(URLconf)就像Django所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段......