当前位置:网站首页>用户管理-分页
用户管理-分页
2022-07-17 05:03:00 【du fei】
定义模型类
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
边栏推荐
- MySQL fuzzy matching 1, 11111 similar string problems
- 类对象自动注入属性操作工具
- Some concepts of ES
- 使用循环语句制作登录程序
- MYSQL数据库表A数据同步到表B
- Mongo Db单机版的安装和快速使用
- UE-插件 ElectronicNodes 5.0.0/4.23-4.27
- MySQL takes the union of two query conditions and then queries
- And predicts that nerf will eventually replace deepfake
- 用FastApi进行WEB开发
猜你喜欢

mysql主从架构和读写分离、以及高可用架构

MySQL takes the union of two query conditions and then queries

MYSQL模糊匹配1,11,111这种相似字符串问题

Freshman task-5

Mysql database table a data synchronization to table b

The database takes the fields of the configuration file, and then processes and judges the data

RestClient操作文档

异步数据-短信验证码

ThreadLocal线程安全示例及其原理
[email protected] : `node install. Problems of js`"/>solve [email protected] : `node install. Problems of js`
随机推荐
Freshman task-5
免签名模板审核的短信验证测试
Es document operation
fastjson、jackjson、gson区别和注意点
TopicExchange交换机简单使用。
ThreadLocal线程安全示例及其原理
Service end interface test - test point of interface test [Hangzhou multi tester] [Hangzhou multi tester _ Wang Sir]
Deleting snapshot: error deleting snapshot: Dictionary problem
DSL search results processing, including sorting, paging, highlighting
Learn about scheduled tasks in one article
Blessing for the elderly popular short video wechat applet source code download support traffic master
Notes on Advanced Mathematics: second derivative of composite function and curvature of solving parametric equation
图片上传的逻辑
Desensitization field example
DSL查询文档
力扣刷题02(三数之和+最大子序和+二叉树最近公共祖先)
RestClient操作文档
Common PostgreSQL data operation notes (updated from time to time)
Conception finale: système distribué de gestion de la santé pour la prévention des épidémies hautement simultanées basé sur vue + socket + redis
Hightec new aurix tc37x demo project