目录:Django 2.1 从零开始搭建博客网站系列
服务器环境搭建(选学)
- 在阿里云服务器从零开始上线Django项目:Ubuntu18.04+Python3+Django2,并通过公网IP访问
小试牛刀——简单的博客网站
- 一、Django2.1 搭建简单的博客网站
- 二、Django2.1 搭建简单的博客网站扩展——自定义模板和静态文件位置
庖丁解牛——多用户的博客网站之用户模块
- 三、Django2.1 搭建多用户的博客网站——登录
- 四、Django2.1 搭建多用户的博客网站——注册
- 五、Django2.1 搭建多用户的博客网站——修改密码
- 六、Django2.1 搭建多用户的博客网站——重置密码
- 七、Django2.1 搭建多用户的博客网站——维护个人详细信息
- 八、Django2.1 搭建多用户的博客网站——头像上传
- 九、Django2.1 搭建多用户的博客网站——用户模块小结
庖丁解牛——多用户的博客网站之文章模块
- 十、Django2.1 搭建多用户的博客网站——文章栏目
- 十一、Django2.1 搭建多用户的博客网站——简单的文章发布
- 十二、Django2.1 搭建多用户的博客网站——使用Markdown发布文章
- 十三、Django2.1 搭建多用户的博客网站——修改和删除文章
- 十四、Django2.1 搭建多用户的博客网站——向用户展示文章
- 十五、Django2.1 搭建多用户的博客网站——文章模块小结
华丽转身——多用户的博客网站之扩展功能
- 十六、Django2.1 搭建多用户的博客网站——文章点赞功能
- 十七、Django2.1 搭建多用户的博客网站——统计文章浏览次数
- 十八、Django2.1 搭建多用户的博客网站——文章评论功能
- 十九、Django2.1 搭建多用户的博客网站——使用自定义模板标签
- 二十、Django2.1 搭建多用户的博客网站——文章标签
- 二十一、Django2.1 搭建多用户的博客网站——美图模块
- 未完待续
项目源码下载:https://github.com/jt1024/lehehe
正文:
如果忘记密码了,就只能重置密码了。Django提供了内置的重置密码方法。
1、重置密码的基本流程
选择重置密码—>填写注册用户时的邮箱—>向用户发送邮件—>点击右键中的连接—>进入重置密码页面—>重置密码成功
2、使用内置方法重置密码
在 ./account/urls.py 中新增如下代码
path('password-reset/',
auth_views.PasswordResetView.as_view(
template_name="account/password_reset_form.html",
email_template_name="account/password_reset_email.html",
subject_template_name="account/password_reset_subject.txt",
success_url="/account/password-reset-done/"),
name='password_reset'),
path('password-reset-done/', auth_views.PasswordResetDoneView.as_view(template_name="account/password_reset_done.html"), name='password_reset_done'),
path('password-reset-confirm///', auth_views.PasswordResetConfirmView.as_view(template_name="account/password_reset_confirm.html", success_url='/account/password-reset-complete/'),
name="password_reset_confirm"),
path('password-reset-complete/', auth_views.PasswordResetCompleteView.as_view(template_name='account/password_reset_complete.html'), name='password_reset_complete'),
创建 ./templates/account/password_reset_form.html
{% extends "base.html" %}
{% block title %}password reset{% endblock %}
{% block content %}
Forgotten your password? Reset, please.
Enter your email to set a new password.
{% endblock %}
创建 ./templates/account/password_reset_email.html
You're receiving this email because you requested a password reset for your user account at taoge100.com
Please go to the following page and choose a new password:
{{ protocol }}://{{ domain }}{% url 'account:password_reset_confirm' uidb64=uid token=token %}
Your username, in case you've forgotten:{{ user.get_username }}
Thanks for using our site!
The taoge100.com team
创建 ./templates/account/password_reset_subject.txt
{% load i18n %}{% autoescape off %}
{% blocktrans %}Password reset on {{ site_name }}{% endblocktrans %}
{% endautoescape %}
创建 ./templates/account/password_reset_done.html
{% extends "base.html" %}
{% block title %}password reset{% endblock %}
{% block content %}
Reset your password
We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.
If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder.
{% endblock %}
创建 ./templates/account/password_reset_confirm.html
{% extends "base.html" %}
{% block title %}password reset{% endblock %}
{% block content %}
Reset Password
Please enter your new password twice so we can verify you typed it in correctly.
{% endblock %}
创建 ./templates/account/password_reset_complete.html
{% extends "base.html" %}
{% block title %}password reset{% endblock %}
{% block content %}
Reset your password
Your password has been set. You may go ahead and log in now.
{% endblock %}
在 ./lehehe/settings.py 中配置邮箱参数,在末尾增加如下代码
# 邮件配置信息
EMAIL_USER_SSL = True
# 邮件服务器,如果是163,就改成 smtp.163.com
EMAIL_HOST = 'smtp.qq.com'
# 邮件服务器端口
EMAIL_PORT = 25
# 发送邮件的账号
EMAIL_HOST_USER = '邮箱名称'
# SMTP服务密码
EMAIL_HOST_PASSWORD = '你的SMTP服务密码,即邮箱的登录授权码'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
3、测试
先登录一个用户,然后通过浏览器访问 http://127.0.0.1:8000/account/password-reset/
4、疑难问题解决
问题1 :获取邮箱登录授权码
不同的邮箱登录授权码后去方式不同,可自行百度。比如获取QQ邮箱的SMTP服务密码,可参考 https://cloud.tencent.com/developer/article/1392336
问题2:邮件发送失败
发送邮件的时候,如果失败,参考:Django 发送邮件失败
问题3:同一个邮箱连续收到多封邮件
如果同一个邮箱连续收到多封邮件,是因为你的后台有多个用户注册的都是这一个邮箱