五、Django2.1 搭建多用户的博客网站——修改密码

96
麦典威
0.5 2019.01.27 18:12* 字数 710

目录:Django 2.1 从零开始搭建博客网站系列

服务器环境搭建(选学)

小试牛刀——简单的博客网站

庖丁解牛——多用户的博客网站之用户模块

庖丁解牛——多用户的博客网站之文章模块

华丽转身——多用户的博客网站之扩展功能

项目源码下载:https://github.com/jt1024/lehehe

正文:

Django有内置的修改密码方法,我们可以直接拿来用,只需要修改相关模板即可。

修改 ./account/urls.py 新增以下两行代码

path('password-change/', auth_views.PasswordChangeView.as_view(template_name="account/password_change_form.html", success_url="/account/password-change-done/"), name='password_change'),
path('password-change-done/', auth_views.PasswordChangeDoneView.as_view(template_name="account/password_change_done.html"), name='password_change_done'),

注意这个参数 success_url 的用法

创建 ./templates/account/password_change_form.html

{% extends "base.html" %}
{% block title %}passowrd change{% endblock %}

{% block content %}
<div class="row text-center vertical-middle-sm">
    <h1>Change Password</h1>
    <p>Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.</p>

    {% if form.new_password1.help_text %}
    <div class="text-left" style="margin-left:400px">
        <p>{{ form.new_password1.help_text|safe }}</p>
    </div>
    {% endif %}

    <form class="form-horizontal" action="." method="post">{% csrf_token %}
        <div class="form-group">
            <label class='col-md-5 control-label text-right'>{{ form.old_password.label_tag }}</label>
            <div class="col-md-6 text-left">{{ form.old_password }}</div>
        </div>
        <div class="form-group">
            <label class='col-md-5 control-label text-right'>{{ form.new_password1.label_tag }}</label>
            <div class="col-md-6 text-left">{{ form.new_password1 }}</div>
        </div>
        <div class="form-group">
            <label class="col-md-5 control-label text-right">{{ form.new_password2.label_tag }}</label>
            <div class="col-md-6 text-left">{{ form.new_password2 }}</div>
        </div>

        <input type="submit" value="Change my password" class="btn btn-primary btn-lg"/>
    </form>
</div>
{% endblock %}

创建 ./templates/account/password_change_done.html

{% extends "base.html" %}
{% block title %}password change done{% endblock %}

{% block content %}
<div class="row text-center vertical-middle-sm">
    <p>Your password was changed.</p>
</div>
{% endblock %}

访问 http://127.0.0.1:8000/account/password-change/ 页面如图:

修改密码.png

填写完表单提交后,页面如图


修改密码成功.png
Gupao