实现功能

    • 登录
    • 注册
    • 忘记密码
    • 修改用户密码
    • 修改用户信息
    • 得到手机验证码
    • 查询用户信息
    • 注销用户

    应用技术

    • django
    • django-drf

    代码实现

    • models.py
    1. from django.db import models
    2. class UserModel(models.Model):
    3. id = models.BigAutoField(primary_key=True, null=False, blank=False, help_text="user_id", verbose_name="user_id")
    4. username = models.CharField(max_length=20, null=False, unique=True, blank=False, help_text="username",
    5. verbose_name="username")
    6. password = models.CharField(max_length=30, null=False, blank=False, help_text="userPassword",
    7. verbose_name="userPassword")
    8. createTime = models.DateTimeField(auto_now_add=True, verbose_name="create_time", help_text="create_time",
    9. null=False, blank=False)
    10. endTime = models.DateTimeField(auto_now=True, verbose_name="endTime", help_text="endTime", null=False, blank=False)
    11. @staticmethod
    12. def get_user_info(username, password):
    13. try:
    14. return UserModel.objects.get(username=username, password=password)
    15. except UserModel.DoesNotExist:
    16. return None
    17. @staticmethod
    18. def get_user_info_user_id(get_userid):
    19. try:
    20. return UserModel.objects.get(id=get_userid)
    21. except UserModel.DoesNotExist:
    22. return None
    23. class Meta:
    24. db_table = "user_table"
    25. verbose_name = "user_info"
    26. verbose_name_plural = verbose_name

    admin.py

    1. from django.contrib import admin
    2. from apps.User.models import UserModel
    3. @admin.register(UserModel)
    4. class UserAdmin(admin.ModelAdmin):
    5. pass

    Message.py

    1. # -*- coding: utf-8 -*-
    2. # @Time : 2021/1/19 下午10:34
    3. # @Author : void bug
    4. # @FileName: Message.py
    5. # @Software: PyCharm
    6. User_PassWord_Error = "If the user's account number or password is wrong, please check the input information"
    7. User_info_Dont_Found = "The user account information is wrong, please check the user information"
    8. Passing_Error = "There is an error in passing parameters, please check the user parameters"

    views.py

    1. from random import randint
    2. from rest_framework import status
    3. from rest_framework import viewsets
    4. from rest_framework.decorators import action
    5. from rest_framework.response import Response
    6. from .Message import *
    7. from .models import UserModel
    8. from .serializer import Deserializer
    9. class UserViewSite(viewsets.ModelViewSet):
    10. queryset = UserModel.objects.all()
    11. serializer_class = Deserializer
    12. def create(self, request, *args, **kwargs):
    13. serializer = self.get_serializer(data=request.data)
    14. serializer.is_valid(raise_exception=True)
    15. serializer.save()
    16. return Response(serializer.data)
    17. @staticmethod
    18. def is_valid(*args):
    19. return all([*args])
    20. @staticmethod
    21. def same_code(a_password, b_password):
    22. return a_password == b_password
    23. @action(methods=['post'], detail=True, url_name="user_login", url_path='user_login')
    24. def user_login(self, request, pk=None):
    25. username, password = request.data.get('username'), request.data.get('password')
    26. _user_info = UserModel.get_user_info(username=username, password=password)
    27. if not UserViewSite.is_valid(username, password):
    28. return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)
    29. if _user_info is None:
    30. return Response(User_PassWord_Error, status=status.HTTP_400_BAD_REQUEST)
    31. else:
    32. return Response(Deserializer(_user_info, many=False).data, status=status.HTTP_200_OK)
    33. @action(methods=['post'], detail=True, url_path="set_password", url_name="set_password")
    34. def set_password(self, request, pk=None):
    35. userid, userNewPassword, userNewAgentPassword = request.data.get("userid"), request.data.get(
    36. "userNewPassword"), request.data.get("userNewAgentPassword")
    37. if not UserViewSite.is_valid(userid, userNewPassword, userNewAgentPassword):
    38. return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)
    39. if UserViewSite.same_code(a_password=userNewPassword, b_password=userNewAgentPassword):
    40. _user_info = UserModel.get_user_info_user_id(get_userid=userid)
    41. if _user_info is None:
    42. return Response(User_info_Dont_Found, status=status.HTTP_400_BAD_REQUEST)
    43. else:
    44. _user_info.password = userNewPassword
    45. _user_info.save()
    46. return Response(Deserializer(_user_info, many=False).data, status=status.HTTP_200_OK)
    47. else:
    48. return Response(User_info_Dont_Found, status=status.HTTP_400_BAD_REQUEST)
    49. @action(methods=['post'], detail=True, url_path='phone', url_name="phone")
    50. def phone(self, request, pk=None):
    51. if pk is "get_phone":
    52. phone = request.data.get("phone")
    53. if UserViewSite.is_valid(phone):
    54. return Response({"phone": phone, "message": randint(10000, 999999)}, status=status.HTTP_200_OK)
    55. else:
    56. return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)
    57. elif pk is "set_phone":
    58. phone = request.data.get("phone")
    59. Get_Phone, Set_Phone = request.data.get('Get_Phone'), request.data.get('Set_Phone')
    60. if UserViewSite.is_valid(phone, Get_Phone, Set_Phone):
    61. _is_Bool = UserViewSite.same_code(a_password=Get_Phone, b_password=Set_Phone)
    62. return Response({'phone': phone, "message": _is_Bool}, status=status.HTTP_200_OK)
    63. else:
    64. return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)

    urls.py

    1. # -*- coding: utf-8 -*-
    2. # @Time : 2021/1/19 下午7:55
    3. # @Author : void bug
    4. # @FileName: urls.py
    5. # @Software: PyCharm
    6. from django.urls import path, include
    7. from .views import UserViewSite
    8. from rest_framework import routers
    9. My_Views = routers.DefaultRouter()
    10. My_Views.register("user", UserViewSite, basename="user_views")
    11. urlpatterns = [
    12. path('', include(My_Views.urls)),
    13. ]

    mainapp.urls :主appurls.py文件

    1. from django.contrib import admin
    2. from django.urls import path, include
    3. urlpatterns = [
    4. path('admin/', admin.site.urls),
    5. '''
    6. 其他路由
    7. '''
    8. path('User/', include('apps.User.urls')),
    9. ]