实现功能
- 登录
- 注册
- 忘记密码
- 修改用户密码
- 修改用户信息
- 得到手机验证码
- 查询用户信息
- 注销用户
应用技术
- django
- django-drf
代码实现
models.py
from django.db import modelsclass UserModel(models.Model):id = models.BigAutoField(primary_key=True, null=False, blank=False, help_text="user_id", verbose_name="user_id")username = models.CharField(max_length=20, null=False, unique=True, blank=False, help_text="username",verbose_name="username")password = models.CharField(max_length=30, null=False, blank=False, help_text="userPassword",verbose_name="userPassword")createTime = models.DateTimeField(auto_now_add=True, verbose_name="create_time", help_text="create_time",null=False, blank=False)endTime = models.DateTimeField(auto_now=True, verbose_name="endTime", help_text="endTime", null=False, blank=False)@staticmethoddef get_user_info(username, password):try:return UserModel.objects.get(username=username, password=password)except UserModel.DoesNotExist:return None@staticmethoddef get_user_info_user_id(get_userid):try:return UserModel.objects.get(id=get_userid)except UserModel.DoesNotExist:return Noneclass Meta:db_table = "user_table"verbose_name = "user_info"verbose_name_plural = verbose_name
admin.py
from django.contrib import adminfrom apps.User.models import UserModel@admin.register(UserModel)class UserAdmin(admin.ModelAdmin):pass
Message.py
# -*- coding: utf-8 -*-# @Time : 2021/1/19 下午10:34# @Author : void bug# @FileName: Message.py# @Software: PyCharmUser_PassWord_Error = "If the user's account number or password is wrong, please check the input information"User_info_Dont_Found = "The user account information is wrong, please check the user information"Passing_Error = "There is an error in passing parameters, please check the user parameters"
views.py
from random import randintfrom rest_framework import statusfrom rest_framework import viewsetsfrom rest_framework.decorators import actionfrom rest_framework.response import Responsefrom .Message import *from .models import UserModelfrom .serializer import Deserializerclass UserViewSite(viewsets.ModelViewSet):queryset = UserModel.objects.all()serializer_class = Deserializerdef create(self, request, *args, **kwargs):serializer = self.get_serializer(data=request.data)serializer.is_valid(raise_exception=True)serializer.save()return Response(serializer.data)@staticmethoddef is_valid(*args):return all([*args])@staticmethoddef same_code(a_password, b_password):return a_password == b_password@action(methods=['post'], detail=True, url_name="user_login", url_path='user_login')def user_login(self, request, pk=None):username, password = request.data.get('username'), request.data.get('password')_user_info = UserModel.get_user_info(username=username, password=password)if not UserViewSite.is_valid(username, password):return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)if _user_info is None:return Response(User_PassWord_Error, status=status.HTTP_400_BAD_REQUEST)else:return Response(Deserializer(_user_info, many=False).data, status=status.HTTP_200_OK)@action(methods=['post'], detail=True, url_path="set_password", url_name="set_password")def set_password(self, request, pk=None):userid, userNewPassword, userNewAgentPassword = request.data.get("userid"), request.data.get("userNewPassword"), request.data.get("userNewAgentPassword")if not UserViewSite.is_valid(userid, userNewPassword, userNewAgentPassword):return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)if UserViewSite.same_code(a_password=userNewPassword, b_password=userNewAgentPassword):_user_info = UserModel.get_user_info_user_id(get_userid=userid)if _user_info is None:return Response(User_info_Dont_Found, status=status.HTTP_400_BAD_REQUEST)else:_user_info.password = userNewPassword_user_info.save()return Response(Deserializer(_user_info, many=False).data, status=status.HTTP_200_OK)else:return Response(User_info_Dont_Found, status=status.HTTP_400_BAD_REQUEST)@action(methods=['post'], detail=True, url_path='phone', url_name="phone")def phone(self, request, pk=None):if pk is "get_phone":phone = request.data.get("phone")if UserViewSite.is_valid(phone):return Response({"phone": phone, "message": randint(10000, 999999)}, status=status.HTTP_200_OK)else:return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)elif pk is "set_phone":phone = request.data.get("phone")Get_Phone, Set_Phone = request.data.get('Get_Phone'), request.data.get('Set_Phone')if UserViewSite.is_valid(phone, Get_Phone, Set_Phone):_is_Bool = UserViewSite.same_code(a_password=Get_Phone, b_password=Set_Phone)return Response({'phone': phone, "message": _is_Bool}, status=status.HTTP_200_OK)else:return Response(Passing_Error, status=status.HTTP_400_BAD_REQUEST)
urls.py
# -*- coding: utf-8 -*-# @Time : 2021/1/19 下午7:55# @Author : void bug# @FileName: urls.py# @Software: PyCharmfrom django.urls import path, includefrom .views import UserViewSitefrom rest_framework import routersMy_Views = routers.DefaultRouter()My_Views.register("user", UserViewSite, basename="user_views")urlpatterns = [path('', include(My_Views.urls)),]
mainapp.urls :主app的urls.py文件
from django.contrib import adminfrom django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),'''其他路由'''path('User/', include('apps.User.urls')),]
