当前位置:网站首页>用户管理-分页
用户管理-分页
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
边栏推荐
- Penetration test 10 - scan web directories (dirb, wfuzz, wpscan, Nikto)
- Sleuth getting started
- Learn about scheduled tasks in one article
- Mysql8.026-- view (bottom)
- Declaration and definition of template class
- 负载均衡添加ssl证书
- Flask的使用
- Redis cluster interview questions
- UE plug-in electronicnodes 5.0.0/4.23-4.27
- 一文了解定时任务
猜你喜欢

Emqx pressure test tread pit for your reference

关于当前响应已经调用了方法getOutputStream()

One article to understand Zipkin

Shallow chat link tracking

3.RestClient查询文档

CVE-2017-12635 Couchdb 垂直权限绕过漏洞复现
[论文精读]BERT
![[fuel cell] simulation of fuel cell system control strategy based on Simulink](/img/c8/a8715dd5d57533208cfb4dd918b9e7.png)
[fuel cell] simulation of fuel cell system control strategy based on Simulink

DSL搜索结果处理,包括排序,分页,高亮

TiDB 性能分析和优化
随机推荐
Mongo Db单机版的安装和快速使用
3. Restclient query document
POC——DVWA‘s XSS Reflected
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
邮箱发送邮件(包含附件,网易、QQ)
负载均衡添加ssl证书
Hightec new aurix tc37x demo project
POC——DVWA‘s File Upload
es的一些概念
高等数学笔记:复合函数的二阶导数与参数方程求解曲率
POC——DVWA‘s File Inclusion
Mysql database table a data synchronization to table b
OLTP 负载性能优化实践
ThinkPHP official website tutorial
Restclient operation document
数据库取配置文件字段,然后进行数据处理和判断
Expected to replace deepfake? Uncover this year's super popular nerf Technology
Sleuth getting started
DSL搜索结果处理,包括排序,分页,高亮
Shallow chat link tracking