一:新建modles名为loginModels.py

  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. '''===================================
  4. @Project:wisdomShop
  5. @Author:班婕妤
  6. @Date:10/3/2020 下午2:14
  7. @Company:深圳市智慧养老宝科技有限公司
  8. @Motto:心有猛虎,细嗅蔷薇
  9. @Python_Version:3.7.3
  10. @Django_Version:2.1.5
  11. ======================================='''
  12. class Userinfo(models.Model):
  13. USER_TYPE = (
  14. (1, '普通用户'),
  15. (2, 'VIP'),
  16. (3, 'SVIP')
  17. )
  18. user_type = models.IntegerField(choices=USER_TYPE, blank=True, null=True)
  19. userName = models.CharField(max_length=10)
  20. userPwd = models.CharField(max_length=100)
  21. userTelphone = models.CharField(max_length=10)
  22. userAddress = models.CharField(max_length=10)
  23. userAge = models.CharField(max_length=4)
  24. class UserToken(models.Model):
  25. user = models.OneToOneField(Userinfo, on_delete=models.CASCADE)
  26. token = models.CharField(max_length=64)

二:执行迁移脚本命令migrate

  1. python manage.py makemigrations zhylbwg
  2. python manage.py migrate zhylbwg

三:新建views名为login.py

  1. # -*- coding: utf-8 -*-
  2. '''===================================
  3. @Project:wisdomShop
  4. @Author:班婕妤
  5. @Date:5/3/2020 下午1:50
  6. @Company:深圳市智慧养老宝科技有限公司
  7. @Motto:心有猛虎,细嗅蔷薇
  8. @Python_Version:3.7.3
  9. @Django_Version:2.1.5
  10. ======================================='''
  11. from django.shortcuts import render,HttpResponse
  12. from django.http import JsonResponse
  13. import pandas as pd
  14. import json
  15. from zhylbwg.models import loginModels
  16. from zhylbwg.views import md5 # 导入自定义md5加密函数
  17. from zhylbwg.views import requestResult # 导入自定义的统一返回函数
  18. from rest_framework.views import APIView
  19. from zhylbwg.util.MySchemaGenerator import DocParam
  20. # Create your views here.
  21. def login(request):
  22. if request.method == 'POST':
  23. # 获取请求头数据,请求以json的格式传输
  24. loginInfor = request.body
  25. loginInformation = json.loads(loginInfor)
  26. # 获取用户名
  27. userName = loginInformation.get('userName')
  28. # 判断该用户名是否存在
  29. userNameDB = loginModels.Userinfo.objects.filter(userName=userName)
  30. print(userNameDB.values_list('userName')[0])
  31. if len(userNameDB) == 0:
  32. return HttpResponse(json.dumps(requestResult.result_json('202', '该用户名不存在,请注册', '')),
  33. content_type="application/json,charset=utf-8")
  34. else:
  35. '''
  36. 判断密码是否正确
  37. '''
  38. # 得到前端传过来的密码
  39. userPwd = loginInformation.get('userPwd')
  40. # 使用mdb进行加密
  41. userPwdMd5 = md5.Md5(userPwd)
  42. # 根据同用户名从数据库中获取密码
  43. checkLogin = loginModels.Userinfo.objects.get(userName=userName)
  44. # 比较2个密码是否一致
  45. if userPwdMd5 == checkLogin.userPwd:
  46. # 若一致,则登录成功
  47. return HttpResponse(json.dumps(requestResult.result_json('203', '登录成功', '')),
  48. content_type="application/json,charset=utf-8")
  49. else:
  50. return HttpResponse(json.dumps(requestResult.result_json('504', '密码错误', '')),
  51. content_type="application/json,charset=utf-8")
  52. def register(request):
  53. # 判断是否为post请求
  54. if request.method == "POST":
  55. # 获取请求头数据,请求以json的格式传输
  56. registerinformation = request.body
  57. # 将请求头数据转化为json格式
  58. registerinformationData = json.loads(registerinformation)
  59. print(registerinformationData)
  60. # 获取用户名
  61. userName = registerinformationData.get('userName')
  62. # 从数据库中查找是否存在该用户名
  63. userNameDB = loginModels.Userinfo.objects.filter(userName=userName)
  64. # 判断用户名是否存在,若存在,则提示已有该用户,若不存在,则进行密码加密后存储到数据库中
  65. if userNameDB:
  66. return HttpResponse(json.dumps(requestResult.result_json('312', '该用户名已经存在', '')),
  67. content_type="application/json,charset=utf-8")
  68. else:
  69. # 获取用户密码
  70. #
  71. userPwd = registerinformationData.get('userPwd')
  72. # 密码加密操作md5,md5加密功能具体看md5加密代码
  73. userPwdMd5 = md5.Md5(userPwd)
  74. # 将加密后的密码赋值给请求头中的密码参数
  75. registerinformationData["userPwd"] = userPwdMd5
  76. # 将json格式数据,类型为dict 存储到数据库中,表明为Userinfo,将注册请求存储到数据库中
  77. loginModels.Userinfo.objects.create(**registerinformationData)
  78. return HttpResponse(json.dumps(requestResult.result_json('201', '注册成功,请登录', '')),
  79. content_type="application/json,charset=utf-8")
  80. else:
  81. return HttpResponse(json.dumps(requestResult.result_json('501', '不是post请求', '')),
  82. content_type="application/json,charset=utf-8")

四:url映射

  1. path('zhylbwg/register/', login.register),
  2. path('zhylbwg/login/', login.login),

五:测试

图片.png

图片.png