天天生鲜项目 python邮箱_Django之天天生鲜项目
准备工作
1、配置settings.py内置文件
注意: AUTH_USER_MODEL配置参数要在第一次迁移数据库之前配置,否则可能django的认证系统工作不正常
2、创建应用
3、配置主路由
一、用户注册
1、创建用户注册model模型
1)设置模型抽象类
2)进入user应用设置model
这里使用的是django内部AbstractUser用户类
2、显示用户注册页面
方法一:使用FBV请求处理
FBV:(function base views) 就是在视图里使用函数处理请求。
1)定义路由
import . import views
url(r'^register$', views.register, name='register')
2)定义注册的视图函数
import re
from django.shortcuts import render, redirect
from .models import User
from django.core.urlresolvers import reverse
def register(request):
'''显示注册页面'''
if request.method == 'GET':
return render(request, 'register.html')
else:
username = request.POST.get('user_name')
password = request.POST.get('pwd')
email = request.POST.get('email')
allow = request.POST.get('allow')
# 进行数据校验
if not all([username, password, email]):
# 数据不完整
return render(request, 'register.html', {'errmsg': '数据不完整'})
# 邮箱校验
if not re.match(r'^[a-z0-9][\w\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
return render(request, 'register.html', {'errmsg': '邮箱格式不正确'})
# 天天生鲜协议校验
if allow != 'on':
return render(request, 'register.html', {'errmsg': '请同意协议'})
# 校验用户名是否重复
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# 用户名不存在
user = None
if user:
# 用户名以存在
return render(request, 'register.html', {'errmsg': '用户名已存在'})
# 进行业务处理:用户注册
user = User.objects.create_user(username, email, password)
user.is_active = 0
user.save()
# 返回应答,跳转到首页
return redirect(reverse('goods:index'))
方法二:使用CBV请求处理(推荐)
CBV(class base views) 就是在视图里使用类处理请求。
1)定义路由
url(r'^register$', RegisterView.as_view(), name='register'), # 注册
2)定义注册视图类
import re
from django.shortcuts import render, redirect
from .models import User
from django.core.urlresolvers import reverse
from django.views.generic import View
from django.conf import settings
from django.http import HttpResponse
class RegisterView(View):
"""注册"""
def get(self, request):
"""显示注册页面"""
return render(request, 'register.html')
def post(self, request):
"""进行注册处理"""
# 接收数据
username = request.POST.get('user_name')
password = request.POST.get('pwd')
email = request.POST.get('email')
allow = request.POST.get('allow')
# 进行数据校验
if not all([username, password, email]):
# 数据不完整
return render(request, 'register.html', {'errmsg': '数据不完整'})
# 邮箱校验
if not re.match(r'^[a-z0-9][\w\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
return render(request, 'register.html', {'errmsg': '邮箱格式不正确'})
# 天天生鲜协议校验
if allow != 'on':
return render(request, 'register.html', {'errmsg': '请同意协议'})
# 校验用户名是否重复
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# 用户名不存在
user = None
if user:
# 用户名以存在
return render(request, 'register.html', {'errmsg': '用户名已存在'})
# 进行业务处理:用户注册
user = User.objects.create_user(username, email, password)
user.is_active = 0
user.save()
# 返回应答,跳转到首页
return redirect(reverse('goods:index'))
3)激活邮箱
1)下载加密签名数据包
2)设置路由,编写代码逻辑
class ActiveView(View):
"""用户激活"""
def get(self, request, token):
"""进行用户激活"""
# 进行解密 获取要激活的用户信息
serializer = Serializer(settings.SECRET_KEY, 3600)
try:
info = serializer.loads(token)
# 获取待激活用户的id
user_id = info['confirm']
# 根据id获取用户信息
user = User.objects.get(id=user_id)
user.is_active = 1
user.save()
# 跳转到登录页面
return redirect(reverse('user:login'))
except SignatureExpired as e:
# 激活链接已过期
return HttpResponse('激活链接已过期')
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired
from django.core.mail import send_mail
# 发送激活邮件 包含激活链接:Http://127.0.0.1:8000/user/active/3
# 激活链接中需要包含用户的身份信息 并且要把身份信息进行加密
# 加密用户的身份信息 生成激活token
class Register(View):
...
serializer = Serializer(settings.SECRET_KEY, 3600)
info = {'confirm': user.id}
token = serializer.dumps(info)
token = token.decode('utf-8')
4)发送邮箱
流程:Django网站--->smtp服务器--->目的邮箱
配置settings.py
class Register(View):
...
# 发邮箱
subject = '天天生鲜欢迎信息'
message = '邮件正文'
sender = settings.EMAIL_FROM
receiver = [email]
html_message = f'
{username},欢迎您成为天天生鲜注册会员
请点击下面链接激活您的账户' \
f'http://127.0.0.1:8000/user/active/{token}'
send_mail(subject, message, sender, receiver, html_message=html_message)
天天生鲜项目 python邮箱_Django之天天生鲜项目相关推荐
- 天天生鲜项目 python邮箱_python3 之 天天生鲜 项目(初学者)1
简单第一步 假设: 你已学过 python基础.高级:了解并简单使用linux操作系统:mysql数据库.redis数据库的简单使用:掌握Django框架的使用 这是一个 很多培训机构 讲解的项目 r ...
- 新手python的100个实战项目,python练手经典100例项目
Python 的练手项目有哪些值得推荐? 基础和爬虫.Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品. Python ...
- 人工智能实战项目(python)+多领域实战练手项目
人工智能实战项目 大家好,我是微学AI,本项目将围绕人工智能实战项目进行展开,紧密贴近生活,实战项目设计多个领域包括:金融.教育.医疗.地理.生物.人文.自然语言处理等:帮助各位读者结合机器学习与深度 ...
- Python项目(Django框架)天天生鲜在CentOS7.9搭建运行
项目地址:fresh-everyday CentOS安装python3 为方便管理,在CentOS桌面创建一个文件夹,将软件包下载到这里,右键--在终端打开 安装python3.9.7 : wget ...
- HTML+CSS+JS 生鲜水果蔬菜商城网站设计——天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品_期末大作业
HTML5期末大作业:生鲜水果蔬菜商城网站设计--天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品/期末大作业 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物 ...
- Python天天美味(32) - python数据结构与算法之堆排序
1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data): for i in ran ...
- HTML5期末大作业:生鲜水果蔬菜商城网站设计——天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品/期末大作业
HTML5期末大作业:生鲜水果蔬菜商城网站设计--天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品/期末大作业 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物 ...
- HTML5期末大作业:生鲜水果蔬菜商城网站设计——天天生鲜水果蔬菜商城(10页) html网页设计期末大作业_网页设计平时作业
HTML5期末大作业:生鲜水果蔬菜商城网站设计--天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品/期末大作业 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物 ...
- 学 Python找不到练手项目?试试这些!
本文转自机器之心,禁止二次转载 作者:Habeeb Shopeju 机器之心编译 参与:高璇 学习 Python 的基础知识是一种美妙的体验.但对于中级 Python 开发人员来说,很多项目要么过难, ...
- python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...
原标题:实践是最好的老师:给中级 Python 开发人员的 13 个项目构想 学习 python 的基础知识是一种美妙的体验.但是,学习的喜悦可以被对实践项目的渴望所取代.想要建立项目是正常的,因此需 ...
最新文章
- 异步、作用域、闭包--setTimeout在for循环中的思考
- 上海技术英雄会续:几个典型问题的看法
- c语言为什么提供函数声明机制,通过实战理解C语言精要——函数篇
- 窗口分析函数_16_找出最后一个元素
- 交叉编译成windows版
- python xlwt模块生成excel文件并写入数据 xlrd读取数据
- 使用exe4j打包Java程序
- MyBatis 源码解读-settingsAsProperties()
- 树上启发式合并 简单例题
- Python生成器和类
- 鸿蒙系统下滑线怎么设置,微信下划线昵称教程来了,快来试试!
- Star Schema完全参考手册读书笔记四
- 【OpenCV应用】python处理行李图像匹配项目——图像特征点
- mysql 视图调用存储过程,是否可以在视图中调用存储过程?
- java和基岩怎么联机_JAVA和基岩版要同步了
- python开发简单计算器下载_python简单计算器
- linux审计工具audit,Linux audit安全审计工具
- XINS Web服务框架
- oracle 创建会话表,oracle临时会话表在存储过程中的使用
- 个人公众号注销方法_微信公众号注销后可以再申请吗 公众号注销帐号方法介绍...