一:新建modles名为loginModels.py
# -*- coding: utf-8 -*-
from django.db import models
'''===================================
@Project:wisdomShop
@Author:班婕妤
@Date:10/3/2020 下午2:14
@Company:深圳市智慧养老宝科技有限公司
@Motto:心有猛虎,细嗅蔷薇
@Python_Version:3.7.3
@Django_Version:2.1.5
======================================='''
class Userinfo(models.Model):
USER_TYPE = (
(1, '普通用户'),
(2, 'VIP'),
(3, 'SVIP')
)
user_type = models.IntegerField(choices=USER_TYPE, blank=True, null=True)
userName = models.CharField(max_length=10)
userPwd = models.CharField(max_length=100)
userTelphone = models.CharField(max_length=10)
userAddress = models.CharField(max_length=10)
userAge = models.CharField(max_length=4)
class UserToken(models.Model):
user = models.OneToOneField(Userinfo, on_delete=models.CASCADE)
token = models.CharField(max_length=64)
二:执行迁移脚本命令migrate
python manage.py makemigrations zhylbwg
python manage.py migrate zhylbwg
三:新建views名为login.py
# -*- coding: utf-8 -*-
'''===================================
@Project:wisdomShop
@Author:班婕妤
@Date:5/3/2020 下午1:50
@Company:深圳市智慧养老宝科技有限公司
@Motto:心有猛虎,细嗅蔷薇
@Python_Version:3.7.3
@Django_Version:2.1.5
======================================='''
from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
import pandas as pd
import json
from zhylbwg.models import loginModels
from zhylbwg.views import md5 # 导入自定义md5加密函数
from zhylbwg.views import requestResult # 导入自定义的统一返回函数
from rest_framework.views import APIView
from zhylbwg.util.MySchemaGenerator import DocParam
# Create your views here.
def login(request):
if request.method == 'POST':
# 获取请求头数据,请求以json的格式传输
loginInfor = request.body
loginInformation = json.loads(loginInfor)
# 获取用户名
userName = loginInformation.get('userName')
# 判断该用户名是否存在
userNameDB = loginModels.Userinfo.objects.filter(userName=userName)
print(userNameDB.values_list('userName')[0])
if len(userNameDB) == 0:
return HttpResponse(json.dumps(requestResult.result_json('202', '该用户名不存在,请注册', '')),
content_type="application/json,charset=utf-8")
else:
'''
判断密码是否正确
'''
# 得到前端传过来的密码
userPwd = loginInformation.get('userPwd')
# 使用mdb进行加密
userPwdMd5 = md5.Md5(userPwd)
# 根据同用户名从数据库中获取密码
checkLogin = loginModels.Userinfo.objects.get(userName=userName)
# 比较2个密码是否一致
if userPwdMd5 == checkLogin.userPwd:
# 若一致,则登录成功
return HttpResponse(json.dumps(requestResult.result_json('203', '登录成功', '')),
content_type="application/json,charset=utf-8")
else:
return HttpResponse(json.dumps(requestResult.result_json('504', '密码错误', '')),
content_type="application/json,charset=utf-8")
def register(request):
# 判断是否为post请求
if request.method == "POST":
# 获取请求头数据,请求以json的格式传输
registerinformation = request.body
# 将请求头数据转化为json格式
registerinformationData = json.loads(registerinformation)
print(registerinformationData)
# 获取用户名
userName = registerinformationData.get('userName')
# 从数据库中查找是否存在该用户名
userNameDB = loginModels.Userinfo.objects.filter(userName=userName)
# 判断用户名是否存在,若存在,则提示已有该用户,若不存在,则进行密码加密后存储到数据库中
if userNameDB:
return HttpResponse(json.dumps(requestResult.result_json('312', '该用户名已经存在', '')),
content_type="application/json,charset=utf-8")
else:
# 获取用户密码
#
userPwd = registerinformationData.get('userPwd')
# 密码加密操作md5,md5加密功能具体看md5加密代码
userPwdMd5 = md5.Md5(userPwd)
# 将加密后的密码赋值给请求头中的密码参数
registerinformationData["userPwd"] = userPwdMd5
# 将json格式数据,类型为dict 存储到数据库中,表明为Userinfo,将注册请求存储到数据库中
loginModels.Userinfo.objects.create(**registerinformationData)
return HttpResponse(json.dumps(requestResult.result_json('201', '注册成功,请登录', '')),
content_type="application/json,charset=utf-8")
else:
return HttpResponse(json.dumps(requestResult.result_json('501', '不是post请求', '')),
content_type="application/json,charset=utf-8")
四:url映射
path('zhylbwg/register/', login.register),
path('zhylbwg/login/', login.login),
五:测试