效果展示:
一、登录功能
1、# User/view.py 登录功能 #
# User/view.py 登录功能 #
class Denglu(APIView):
def post(self, request):
username = request.data.get('username')
password = request.data.get('password')
ser = User.objects.get(Q(username=username) | Q(phone=username))
if ser and check_password(password, ser.password):
return Response({'msg': '登录成功', 'code': 200, 'uid': ser.id,'username':ser.username})
else:
return Response({"msg": "登录失败", "code": 500})
2、路由
path('denglu/', Denglu.as_view()),
二、Celery异步发邮件更改密码
python == 3.7.6
django == 2.1.8
celery == 4.4.7
redis == 3.5.3
eventlet == 0.26.1
1、在项目文件中创建celery.py 配置文件要改成相对应的项目名
# celery.py文件
import os
from celery import Celery
# 把celery和django进行组合,识别和加载django的配置文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gongdan.settings")
# 创建celery实例
app = Celery('gongdan')
# 指定celery消息队列的配置
app.config_from_object('gongdan.config', namespace='CELERY')
# 从所有的django-app中加载任务
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
2、在项目文件中创建config.py
# 消息中间人设置
broker_url = 'redis://127.0.0.1:6379/15'
# 结果存储设置
result_backend = 'redis://127.0.0.1:6379/14'
3、在项目中__init__.py文件中写入
# 绝对引用,使我们的celery模块不会与原始的celery冲突
from __future__ import absolute_import, unicode_literals
# 加入绝对引入以后,导入当前模块下的内容方法: from xx import xx as xx
from .celery import app as celery_app
__all__ = ('celery_app',)
4、在settings.py中配置发邮件的内容:
# 配置邮件发送
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 如果为163邮箱,设置为smtp.163.com
EMAIL_PORT = 25 # 或者 465/587是设置了 SSL 加密方式
# 发送邮件的邮箱
EMAIL_HOST_USER = '480756540@qq.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'tamvzwtoqredbgeb' # 第三方登陆使用的授权密码
EMAIL_USE_TLS = True # 这里必须是 True,否则发送不成功
# 收件人看到的发件人, 必须是一直且有效的
EMAIL_FROM = '大脸源<480756540@qq.com>'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
5、在django的app中创建tasks.py文件,在这里写入异步任务内容:
注意:此处的html_message 激活地址对应的是前段页面的路由
# 绝对引用,使我们的celery模块不会与原始的celery冲突
from __future__ import absolute_import, unicode_literals
# 导入原始的celery模块中shared_task from xx import xx
from celery import shared_task
# 导入django的settings
from django.conf import settings
# 使用django内置函数发送邮件
from django.core.mail import send_mail
@shared_task
def send_mail_task(username, email, token):
"""
使用django内置函数发送邮件
"""
subject