• DRF


    models.py:

    from django.db import models
    
    
    class UserGroup(models.Model):
        title = models.CharField(max_length=32)
    
    
    class UserInfo(models.Model):
        user_type_choices = (
            (1, "普通用户"),
            (2, "管理员"),
            (3, "超级管理员"),
        )
        user_type = models.IntegerField(choices=user_type_choices)
    
        username = models.CharField(max_length=32,unique=True)
        password = models.CharField(max_length=64)
    
        group = models.ForeignKey("UserGroup", on_delete=models.DO_NOTHING)
        roles = models.ManyToManyField("Role")
    
    
    class Role(models.Model):
        title = models.CharField(max_length=32)
    

    role 表中数据

    usergroup 表中数据

     userinfo 表中数据

    userinfo_role 表中数据

    views.py:

    from rest_framework.views import APIView
    from rest_framework import serializers
    from drf import models
    import json
    from django.shortcuts import HttpResponse
    
    
    class UserSerializers(serializers.Serializer):
        # 获取 UserInfo 表的 user_type 字段的 key
        # 变量名是任意取的,因为通过 source 指定了字段
        user_type_id = serializers.CharField(source="user_type")
        # 获取 UserInfo 表的 user_type 字段的 value
        user_type_title = serializers.CharField(source="get_user_type_display")
        # 获取 UserInfo 表的 username 和 password 字段
        username = serializers.CharField()
        password = serializers.CharField()
        # 获取 UserInfo 表关联的 UserGroup 表的 title 字段(一对多的关系)
        user_group = serializers.CharField(source="group.title")
    
        # 获取 UserInfo 表关联的 Role 表的 id、title 字段(多对多关系)
        user_role = serializers.SerializerMethodField()
        # 命名规则:get_变量名,user_obj 为 user 对象
        def get_user_role(self, user_obj):
            role_list = user_obj.roles.all()
            ret = []
            # 获取 Role 表中的数据
            for item in role_list:
                ret.append({"id": item.id, "title": item.title})
            return ret
    
    
    class UserInfoView(APIView):
        def get(self, request, *args, **kwargs):
            users = models.UserInfo.objects.all()
            ser = UserSerializers(instance=users, many=True)
            ret = json.dumps(ser.data, ensure_ascii=False)
            return HttpResponse(ret)
    

    访问:

  • 相关阅读:
    jsp获取一个对象和list对象
    request属性 request.getAttribute()
    Ajax注册表单用户名实时验证
    codeigniter 操作mysql的PHP代码--更新
    linux后台server开发环境的部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))
    Android
    Jquery Jqprint—随着Jquery Jqprint实现网页打印
    SQL于DML(数据库操作语言)采用
    远程数据client交换器
    如何选择项目?
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14295875.html
Copyright © 2020-2023  润新知