修改密码

再此之前我们已经完成了用户登录、注册、注销等功能,接下来让我们继续为用户提供修改密码的功能。该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样。

编写修改密码模板

修改密码的的视图函数默认渲染的模板名为 password_change_form.html,因此首先在 registration/ 下新建一个 password_change_form.html 文件,写入表单代码(几乎和登录页面一样),在此就不做过多解释了,具体请参考 Django 用户认证系统:登录 部分的说明。

templates/registration/password_change_form.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>修改密码</title>
    <link rel="stylesheet" href="https://unpkg.com/mobi.css/dist/mobi.min.css">
    <style>
        .errorlist {
            color: red;
        }
    </style>
</head>
<body>
<div class="flex-center">
    <div class="container">
        <div class="flex-center">
            <div class="unit-1-2 unit-1-on-mobile">
                <h1><a href="{% url 'index' %}">Django Auth Example</a></h1>
                <h3>修改密码</h3>
                <form class="form" action="{% url 'password_change' %}" method="post">
                    {% csrf_token %}
                    {{ form.non_field_errors }}
                    {% for field in form %}
                        {{ field.label_tag }}
                        {{ field }}
                        {{ field.errors }}
                        {% if field.help_text %}
                            <p class="help text-small text-muted">{{ field.help_text|safe }}</p>
                        {% endif %}
                    {% endfor %}
                    <button type="submit" class="btn btn-primary btn-block">确认修改</button>
                </form>
            </div>
        </div>
    </div>
</div>
</body>
</html>

此外,在首页加一个修改密码的按钮,并且注意只对已登录用户显示:

templates/index.html

{% if user.is_authenticated %}
  <p>你已登录,欢迎你:<a href="#">{{ user.username }}</a></p>
  <button class="btn btn-default"><a href="{% url 'logout' %}?next={{ request.path }}">注销登录</a>
  </button>
  <button class="btn btn-default"><a href="{% url 'password_change' %}?next={{ request.path }}">修改密码</a>
  </button>
{% else %}

编写密码修改成功页面模板

密码修改成功后,Django 会把用户跳转到密码修改成功页面,该页面渲染的模板为 password_change_done.html,因此再添加一个密码修改成功页面的模板:

templates/registration/password_change_done.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>密码修改成功</title>
    <link rel="stylesheet" href="https://unpkg.com/mobi.css/dist/mobi.min.css">
</head>
<body>
<div class="flex-center">
    <div class="container">
        <div>
            <h1 class="logo"><a href="{% url 'index' %}">Django Auth Example</a></h1>
            <p>密码修改成功!</p>
        </div>
    </div>
</div>
</body>
</html>

OK,修改密码的功能就完成了。流程为已登录用户点击主页的修改密码按钮跳转到修改密码页面,修改密码成功后跳转到修改成功页面。

总结

本教程的示例项目代码位于 GitHub:Django Auth Example

如果遇到问题,请通过下面的方式寻求帮助。

更多 Django 相关教程,请访问我的个人博客:追梦人物的博客

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nummy

python安装私有包

你想要安装一个第三方包,但是没有权限将它安装到系统Python库中去。 或者,你可能想要安装一个供自己使用的包,而不是系统上面所有用户。

13730
来自专栏程序员互动联盟

【编程基础】初学者如何学习Linux网络

1. Linux网络编程--网络知识介绍 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 1.1 客户端 在网络程序中,...

341130
来自专栏编程

ansible2.4 源码分析-自定义inventory解析插件实现

微信公众号:进击的大杂烩 通过上一篇文章,初步的分析了ansible2.4的一个运行流程,没有对 ansible 解析 source 的过程进行详细分析。本文通...

354100
来自专栏左瞅瞅,右瞅瞅

SaltStack——配置管理(haproxy)

1.balance roundrobin # 轮询,软负载均衡基本都具备这种算法 2.balance static-rr # 根据权重,建议使用 3.ba...

18630
来自专栏SDNLAB

SDN开发笔记(二):SDN控制器的使用

鉴于网上对于sdn开发相关的资料较少又乱的现状,从这篇文章开始,我将陆续分享我在sdn开发过程中的经验,我的sdn项目开发是基于opendaylight的rel...

321100
来自专栏云计算教程系列

在腾讯云CVM上安装熟悉Node.js

Node.js是一个开源JavaScript运行环境,用于轻松构建服务器端和网络应用程序。该应用程序可在Linux,OS X,FreeBSD和Windows上运...

32050
来自专栏LuckQI

linux实战应用~redis集群(阿里面试可能会问的)

16230
来自专栏L宝宝聊IT

构建SSH服务体系示例

19850
来自专栏L宝宝聊IT

Linux基础——Firewalld防火墙(二)

34330
来自专栏LinXunFeng的专栏

构建FTP服务器

43650

扫码关注云+社区

领取腾讯云代金券