Python web全栈开发_Django_billshop商城----用户中心-用户基本信息、添加邮件后端逻辑、判断用户登录并返回JSON、Django发送邮件的配置、异步发送邮件、验证邮箱后端逻辑

news/2024/7/9 23:37:15 标签: django, python, vue, redis, mysql

1. 用户中心-用户基本信息

用户基本信息逻辑分析
以下是要实现的后端逻辑
• 用户模型补充email_active字段
• 查询并渲染用户基本信息
• 添加邮箱
• 发送邮箱验证邮件
• 验证邮箱

查询并渲染用户基本信息
用户模型补充email_active字段
• 由于在渲染用户基本信息时,需要渲染用户邮箱验证的状态,所以需要给用户模型补充email_active字段
• 补充完字段后,需要进行迁移

users.models.py追加邮箱是否激活的字段,并迁移

email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')

在这里插入图片描述

查询用户基本信息
在这里插入图片描述
渲染用户基本信息
将后端模板数据传递到Vue.js
• 为了方便实现用户添加邮箱时的界面局部刷新
• 我们将后端提供的用户数据传入到user_center_info.js中
在这里插入图片描述
为了使前端保持一致,所以用了DTL 语法,将django中的值传给js,注意这种用法。

在这里插入图片描述

2. 添加邮箱后端逻辑实现

添加邮箱接口设计和定义
选项 方案
请求方法 PUT
请求地址 /email/

请求参数
参数名 类型 是否必传 说明
email string 是 邮箱

响应结果 JSON
字段 说明
code 状态码
errmsg 错误信息

3. 判断用户是否登录并返回JSON

在 utils 里新建一个views

在这里插入图片描述

在这里插入图片描述

4. Django发送邮件的配置

django不能发送邮件,要借
Django发送邮件流程分析

在这里插入图片描述
send_mall()方法介绍
• 位置:
• 在django.core.mail模块提供了send_mail()来发送邮件。
• 方法参数:
• send_mail(subject, message, from_email, recipient_list, html_message=None)
• 方法参数说明
• subject 邮件标题
• message 普通邮件正文,普通字符串
• from_email 发件人
• recipient_list 收件人列表
• html_message 多媒体邮件正文,可以是html字符串

准备发邮件服务器
1.点击进入《设置》界面
2. POP3/SMTP/IMAP,开启服务
3.设置授权码,记住设置的密码,Django中登录就是这个密码

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 指定邮件后端
EMAIL_HOST = 'smtp.163.com' # 发邮件主机
EMAIL_PORT = 25 # 发邮件端口
EMAIL_HOST_USER = 'xxx@163.com' # 授权的邮箱
EMAIL_HOST_PASSWORD = 'CULXTHBHSENNMPWG' # 邮箱授权时获得的密码,非注册登录密码
EMAIL_FROM = 'xxxx' # 发件人抬头

申请个163邮箱,欢迎大家发送邮件交流,哈!
在这里插入图片描述

开启这两个, 主要保留授权码,以后要用的。
在这里插入图片描述

EMAIL_HOST_PASSWORD 是开启的授权码,而不是注册登录密码,注意。
在这里插入图片描述

在这里插入图片描述

from django.conf import settings
目前为之可以静态发送邮件成功了。
在这里插入图片描述

5. 异步发送邮件

用celery 发送 email,
在celery_tasks 下新建 email 的package,然后在其下面新建tasks
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

from celery_tasks.email.tasks import send_verify_email

在这里插入图片描述
应该会报错,
django.core.exceptions.ImproperlyConfigured: Requested setting EMAIL_FROM, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
应该是授权码的问题。
在这里插入图片描述

因为celery和django 可以脱离, 它认不出配置。 所以去设置规则。
在这里插入图片描述

成功的异步发送见证:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6. 验证邮箱后端逻辑

相关py全部进行相应编写
在这里插入图片描述

至此, 用户中心主体功能全部完成。

此篇开启于前几天,因为忙,刚抽空写完,是下午KFC 里等娃娱乐时补充的后几段。20:16 又补充了一点内容, 现在准备搞昨天的MBA 课程—— 营销管理和财务管理、会计学的所有精华总结。 这个会更精彩,培养高管如何专业的看报表等以及决策的财务管理体系。

让天下没有难学的专业_bill 叔。
奥秘就是,培养自己的兴趣,只要你爱,就冲。


http://www.niftyadmin.cn/n/640169.html

相关文章

第三十九课.while循环

While循环和C语言的while用法是一样的 但是要注意while后面没有分号,不要制造死循环,如果while后面只有一条语句,可以省略花括号{} 例: 输入一个数,输出从这个数开始到100的所有整数 package com.xuenixiang.Shin;…

萤火虫Web开放工具

Firebug的Firefox集成的一个丰富的Web开发工具,你可以在你的网页内编辑,调试和监控CSS,HTML和JavaScript。 网址:http://getfirebug.com/ 自由和开源 功能: 检查和编辑HTML 调整CSS,可视化CSS度量 监控网络…

第四十课.do-while循环

do-while结构和c语言的基本一致,都是先执行后判断 注意:do之后花括号不能省,while后面条件和分号都不能省 例:计算1-100的和 package com.xuenixiang.Shin;public class DoWhileXunHuan {public static void main(String[] arg…

第四十一课.for循环

Java的For循环和C语言的for循环基本一致,在循环中使用的最多(方便) 例:计算1-100的累加结果 package com.xuenixiang.Shin;public class ForXunHuan {public static void main(String[] args) {// 1-100累加和int count0;for(in…

Qt中怎么用Ui文件

2019独角兽企业重金招聘Python工程师标准>>> Qt中怎么用Ui文件 (2012-09-18 22:12:44)转载 http://blog.sina.com.cn/s/blog_438037480101797n.html 第一步, 制作ui文件。 首先应该用Qt Designer绘制一个自己的界面,并存为myform.ui&#xff…

有效避免PDF文档“肥胖”的技巧

PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。还包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。所以,在日常工作学习中,为扩展阅读不少用户喜…

第四十二课.嵌套循环

例&#xff1a;用循环结构来绘制一个直角三角形 package com.xuenixiang.Shin;public class QianTao {public static void main(String[] args) {//输出一个直角三角形for(int i0;i<10;i) {for(int j 1;j<i;j) {System.out.print("#");}System.out.println();…

Web全栈开发学习笔记—Part1 React入门—a.React简介

React 简介 目录 Component JSX Multiple components props: passing data to components Some note 创建一个React应用最简单的方式是使用一个叫做create-react-app 的工具。 创建一个名为 part1 的应用&#xff0c;并进入到它的目录。 $ npx create-react-app part1 $…