[Day25] 找回密码API – views

哈罗大家好,今天要来撰写我们找回密码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

我来说说我的想法以及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实现手势动作辨识(下)

区块链篇

区块链不管怎麽说,也是近年来火红的几个议题之一, 所以即使我不熟悉,也没甚麽兴趣,还是决定发一篇。 ...

DAY21-导览设计之Navbar

前言: 接下来要来完成我们网站的导览部分了,这里阿森主要分为两个大项目,分别是Navbar和Sid...

python入门学习 day 5 (占位符号使用及浮点数运算 )

占位符号使用及浮点数运算 常见的占位符有三种: %d, %f, %s %d只能占位整数,即使是原数字...

[Day 11] -『 GO语言学习笔记』- switch 叙述

以下笔记摘录自『 The Go Workshop 』。 如果遇到需要一大堆if叙述才能处理的状况,就...

30天零负担轻松学会制作APP介面及设计【DAY 29】

大家好,我是YIYI,今天我要来回覆身边的朋友们看完我的文章後问我的问题。 QA Q:如果重来一次还...