zoukankan      html  css  js  c++  java
  • Apiview使用方法

    1.user/models.py 表数据

    from django.db import models
    
    from django.contrib.auth.models import AbstractUser
    # Create your models here.
    
    class User(AbstractUser):
    
        phone = models.CharField('手机号',max_length=20)
    
        img = models.ImageField(upload_to='user',null=True)
    
        nick_name = models.CharField('昵称',max_length=20)
    
        address = models.CharField('地址',max_length=255)
        class Meta:
    
            db_table = 'tb_user'
    user/models.py

    2.user/serializers.py

    from rest_framework import serializers
    from user.models import User
    
    
    class UserInfoSerializer(serializers.Serializer):
        id = serializers.CharField(read_only=True)# 普通字段,设置id为只读字段,不能修改
        username = serializers.CharField(min_length=3,max_length=20,error_messages= {'required': '该字段必填'})# 显示普通字段
        img = serializers.ImageField(required=False)
        nick_name = serializers.CharField(max_length=20)
        address = serializers.CharField(max_length=255)
        xxx = serializers.SerializerMethodField(read_only=True)# 自定义显示(显示多对
    
        aaa=serializers.SerializerMethodField(read_only=True)
        class Meta:
            model=User
        #展示自定义字段
        def get_xxx(self,row):
            users=row.phone
            return users
    
        def get_aaa(self,r):
            nick=r.nick_name
            return nick
        #添加字段
        def create(self, validated_data):
            return User.objects.create(**validated_data)
        #修改字段
        def update(self,instance,validated_data):
            if validated_data.get('nick_name','address'):
                instance.address=validated_data['address']
                instance.nick_name = validated_data['nick_name']
            instance.save()
            return instance
        #权限
        def validate_username(self,value):
            if value=='root':
                raise serializers.ValidationError('不能创建root管理员账号')
            return value
    
    
        def validate(self,attrs):
            print(attrs)
            if attrs.get("username")=='admin':
                raise serializers.ValidationError('不能创建admin用户')
            return attrs
    user/serializers.py

    3.user/views.py

    from .serializers import UserInfoSerializer
    from rest_framework.views import APIView
    from .models import User
    
    
    
    class UserInfoViewSet(APIView):
        #查询用户
        def get(self,request,*args,**kwargs):
            obj=User.objects.all()
            ser=UserInfoSerializer(obj,many=True)
            return Response(ser.data,status=200)
    
        #创建用户
        def post(self,request):
            ser=UserInfoSerializer(data=request.data)
            #判断提交数据是否合法
            if ser.is_valid():
                ser.save()
                return Response(ser.data,status=201)
            return Response(ser.errors,status=400)
    
        #更改用户信息
        def put(self,request):
            pk=request.query_params.get('pk')
            print(pk)
            try:
                userinfo=User.objects.get(id=pk)
            except Exception as e:
                return Response(data='用户不存在',status=201)
    
            ser=UserInfoSerializer(userinfo,data=request.data)
            if ser.is_valid():
                ser.save()
                return Response(ser.data,status=201)
            return Response(data=ser.errors,status=400)
    user/views.py

     4.user/urls.py 路由

    urlpatterns = [
        path('apiview/', views.UserInfoViewSet.as_view()),
    
    ]

    查询 

    http://192.168.56.100:8888/user/apiview/

    修改

    http://192.168.56.100:8888/user/apiview/?pk=5

    添加

    http://192.168.56.100:8888/user/apiview/

  • 相关阅读:
    ubuntu16.04安装ibus中文输入法
    apt --fix-broken install
    fuelgauge
    make flash FLASH_CONFIG=jtag_full
    使用android ndk编译boost动态库
    RK3288的gpio设置
    RK3288 GPIO 输出问题
    HDU-2586-裸LCA入门-tarjan离线
    uva-11324-SCC+dp
    HDU-2767-tarjan/Kosaraju求scc
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/13891171.html
Copyright © 2011-2022 走看看