欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【007】- Django Rest API简介

程序员文章站 2022-07-02 20:56:47
...

本篇接上篇内容,我们学习Django视图。学习之前,我们首先声明,我们主要以目前比较流行的前后端分离思想为主。本篇只是进行一个演示,后续我们将会介绍专门的Rest API方式—Rest Framework。

在前面我们在models.py中定义了两个模型类,分别为User和Role

class User(models.Model):
    """ 用户模型类 """
    SEX_CHOICE = [
        (True, "male"),
        (False, "female"),
    ]

    # 用户ID
    id = models.CharField(max_length=30, primary_key=True, db_column="id")
    # 用户名
    name = models.CharField(max_length=30, unique=True)
    # 密码
    password = models.CharField(max_length=200)
    # 年龄
    age = models.IntegerField()
    # 性别
    sex = models.BooleanField(default=True, choices=SEX_CHOICE)
    # 创建时间
    create_time = models.DateTimeField(auto_now_add=True)
    # 更新时间
    update_time = models.DateTimeField(auto_now=True)
    # 备注
    remark = models.CharField(max_length=200, null=True)
    # 在此我们假设一个用户只能有一个角色,但一个角色可以对应多个用户
    user_role = models.ForeignKey("Role", on_delete=models.CASCADE)

    def __str__(self):
        return "id=" + self.id + ",name=" + self.name + ",age=" + str(self.age) + ",remark=" + self.remark

我们基于User在beardata_sys/views.py中定义如下方法

from beardata_sys.models import User, Role
from django.views.decorators.http import require_http_methods
from django.http import JsonResponse
from django.core import serializers
import json


@require_http_methods(["POST"])
def add_user(request):
    """添加用户"""
    response = {}
    try:
        user_dict = json.loads(str(request.body, encoding="utf8"))
        user = User(id=user_dict["id"],
                    name=user_dict["name"],
                    password=user_dict["password"],
                    age=user_dict["age"],
                    remark=user_dict["remark"],
                    user_role=Role.objects.get(id=user_dict["role_id"]))
        user.save()
        response["msg"] = "success"
        response['error_num'] = 0
    except Exception as e:
        response["msg"] = str(e)
        response['error_num'] = 1
    return JsonResponse(response)


@require_http_methods(["GET"])
def get_user_list(request):
    """获取用列表"""
    response = {}
    try:
        user_list = User.objects.filter()
        response['list'] = json.loads(serializers.serialize("json", user_list))
        response['msg'] = 'success'
        response['error_num'] = 0
    except  Exception as e:
        response['msg'] = str(e)
        response['error_num'] = 1
    return JsonResponse(response)

在postman中访问
127.0.0.1:8000/beardata_sys/user/add 添加用户
【007】- Django Rest API简介
访问127.0.0.1:8000/beardata_sys/user/list 获取用户列表
【007】- Django Rest API简介