当前位置:网站首页>用户管理-分页
用户管理-分页
2022-07-27 05:02:00 【Csdn__F】
定义模型类
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils import timezone
# Create your models here.
# 用户
class User(AbstractUser):
mobile = models.CharField('手机号', max_length=11)
last_login = models.DateTimeField('上次登录时间', default=timezone.now)
class Meta:
db_table = 'user'
# 权限类
class PermissionType(models.Model):
name = models.CharField('权限类型', max_length=30)
def __str__(self):
return self.name
class Meta:
db_table = 'permission_type'
# 权限
class Permission(models.Model):
name = models.CharField('权限名称', max_length=30)
code_name = models.CharField('权限', max_length=100)
type_name = models.ForeignKey(PermissionType, on_delete=models.CASCADE, verbose_name='权限类行')
def __str__(self):
return self.name
class Meta:
db_table = 'permission'
# 用户组
class UserGroup(models.Model):
name = models.CharField('组名', max_length=30)
user = models.ManyToManyField(User)
# 多对多
permission = models.ManyToManyField(Permission)
def __str__(self):
return self.name
class Meta:
db_table = 'usergroup'
配置项目
AUTH_USER_MODEL = 'users.user'
写入一个序列化器
import re
from rest_framework import serializers
from users.models import User
from rest_framework.exceptions import ValidationError
# 用户信息
class UserSer(serializers.ModelSerializer):
# 只写不读
password = serializers.CharField(max_length=64, write_only=True, trim_whitespace=True)
class Meta:
model = User
fields = ['id', 'username', 'password', 'mobile', 'email', 'date_joined', 'last_login']
# 只读不写
read_orly_fields = ['id']
def validate(self, attrs):
username = attrs.get('username')
password = attrs.get('password')
mobile = attrs.get('mobile')
email = attrs.get('email')
if not all(['username', 'password', 'mobile', 'email']):
raise ValidationError('数据不能为空')
if not re.findall(r'^\w{5,20}$', username):
raise ValidationError('用户名不符合')
if not re.findall(r'^[\[email protected]#$%^&*]{8,20}$', password):
raise ValidationError('密码不符合')
if not re.findall(r'^1[3-8]\d{9}$', mobile):
raise ValidationError('请输入正确的手机号')
return attrs
# 重写create
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
return user
写入视图
from rest_framework.viewsets import ModelViewSet
from users.models import User
# 分页
from rest_framework.pagination import PageNumberPagination
# 自定义分类
class Pageination(PageNumberPagination):
page_size = 3
max_page_size = 5
page_query_param = 'page'
page_size_query_param = 'pageSize'
# 用户信息
class UserInfoViewSet(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
# 调用分类
pagination_class = Pageination
def create(self, request, *args, **kwargs):
ser = self.get_serializer(data=request.data)
if ser.is_valid():
ser.save()
return Response({
'code': 201, 'msg': '添加成功'}, status=201)
return Response({
'code': 400, 'smg': '添加失败'}, status=200)
写入路由
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('users', views.UserInfoViewSet)
urlpatterns += router.urls
边栏推荐
猜你喜欢

ERP system brand

JVM Part 1: memory and garbage collection part 5 -- runtime data area virtual machine stack

SQL database → constraint → design → multi table query → transaction

B1021 single digit statistics

B1021 个位数统计

JVM Part 1: memory and garbage collection part 11 -- execution engine

Bean's life cycle & dependency injection * dependency auto assembly

李宏毅机器学习组队学习打卡活动day02---回归

李宏毅机器学习组队学习打卡活动day05---网络设计的技巧

整合SSM
随机推荐
Common commands in CONDA and pip environments
How to quickly and effectively solve the problem of database connection failure
后台实现sku 管理
268.missing number of leetcode
JVM Part 1: memory and garbage collection part 6 -- runtime data area local method & local method stack
torch中乘法整理,*&torch.mul()&torch.mv()&torch.mm()&torch.dot()&@&torch.mutmal()
如何快速有效解决数据库连接失败问题
MQ set expiration time, priority, dead letter queue, delay queue
322 coin change of leetcode
ERROR! MySQL is not running, but PID file exists
B1029 旧键盘
Cenos7更新MariaDB
Notes series k8s orchestration MySQL container - stateful container creation process
JVM Part 1: memory and garbage collection part 11 -- execution engine
Pytorch data type and numpy data are mutually transformed
LeetCode刷题之322 Coin Change
Multiplication sorting in torch, * & torch. Mul () & torch. MV () & torch. Mm () & torch. Dot () & @ & torch. Mutmal ()
Day3 ---Flask 状态保持,异常处理与请求钩子
Flask登录实现
SQL数据库→约束→设计→多表查询→事务