哈罗大家好,今天要来撰写我们找回密码API的逻辑,先来看看我的程序码吧~~
from datetime import datetime
import json
import uuid
from django.contrib.auth.models import User
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_protect
from user.models import UserProfile
from django.contrib import auth
from django.contrib.sessions.models import Session
from IThome_Django import settings
from django.core.mail import send_mail
from django.core import signing
import base64
import string#新增
import random#新增
@csrf_protect
def forgot(request): #忘记密码
if request.method == "POST":
data = json.loads(bytes.decode(request.body,"utf-8"))
try:
email = data['email']
user = UserProfile.objects.get(email=email)
chars=string.ascii_letters+string.digits
new_pw ="".join(random.sample(chars,16))
user.set_password(new_pw)
user.save()
title = "找回密码"
sender = settings.EMAIL_HOST_USER
meg ="\n".join(["欢迎".format(user.username),
"新的密码为:\n",new_pw])
send_mail(title,meg,sender,[email])
message = {"status":"0"}
except:
message = {"status":"1"}
return JsonResponse(message)
我来说说我的想法以及function的用法,一样先判断Http Method为POST,然後抓取key为mail的value也就是我们输入的email,再使用chars=string.ascii_letters+string.digits
把英文字母跟数字串起来,再用random.sample(chars,16)
,产生一组资料型态为list,英文跟数字的乱数,而"".join()
则可以把list每个元素用指定的符号连接起来,用这样的方式产生一组新的由英文数字乱码密码,接着用user = UserProfile.objects.get(email=email)
查询资料库与输入email相符的使用者,user.set_password(new_pw)
使用者设定密码,最後用send_mail(title,meg,sender,[email])
寄到信箱,简单来说就是利用注册的email,再重发一次密码。
明天我们接着要来说明重设密码API。
<<: Proxmox VE 备份整合方案应用:Proxmox BS
>>: [Day 25] Edge Impulse + BLE Sense实现手势动作辨识(下)
区块链不管怎麽说,也是近年来火红的几个议题之一, 所以即使我不熟悉,也没甚麽兴趣,还是决定发一篇。 ...
前言: 接下来要来完成我们网站的导览部分了,这里阿森主要分为两个大项目,分别是Navbar和Sid...
占位符号使用及浮点数运算 常见的占位符有三种: %d, %f, %s %d只能占位整数,即使是原数字...
以下笔记摘录自『 The Go Workshop 』。 如果遇到需要一大堆if叙述才能处理的状况,就...
大家好,我是YIYI,今天我要来回覆身边的朋友们看完我的文章後问我的问题。 QA Q:如果重来一次还...