实现功能
- 登录
- 注册
- 忘记密码
- 修改用户密码
- 修改用户信息
- 得到手机验证码
- 查询用户信息
- 注销用户
应用技术
- django
- django-drf
代码实现
models.py
from django.db import models
class 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)
@staticmethod
def get_user_info(username, password):
try:
return UserModel.objects.get(username=username, password=password)
except UserModel.DoesNotExist:
return None
@staticmethod
def get_user_info_user_id(get_userid):
try:
return UserModel.objects.get(id=get_userid)
except UserModel.DoesNotExist:
return None
class Meta:
db_table = "user_table"
verbose_name = "user_info"
verbose_name_plural = verbose_name
admin.py
from django.contrib import admin
from 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: PyCharm
User_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 randint
from rest_framework import status
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from .Message import *
from .models import UserModel
from .serializer import Deserializer
class UserViewSite(viewsets.ModelViewSet):
queryset = UserModel.objects.all()
serializer_class = Deserializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
@staticmethod
def is_valid(*args):
return all([*args])
@staticmethod
def 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: PyCharm
from django.urls import path, include
from .views import UserViewSite
from rest_framework import routers
My_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 admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
'''
其他路由
'''
path('User/', include('apps.User.urls')),
]