Django框架通过restful序列化组件进行get请求接口设计 关键字:serializers

想完成restful序列....

需完成如下步骤:

第一步:创建models数据库模型

class Course(models.Model):
    course_name = models.CharField(max_length=32)
    description = models.CharField(max_length=128)

    def __str__(self):
        return self.course_name


class Author(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    age = models.IntegerField()

    def __str__(self):
        return self.name


class Publish(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)
    email = models.EmailField()

    def __str__(self):
        return self.name


class Book(models.Model):
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    # 外键字段
    publish = models.ForeignKey(to="Publish", related_name="book", related_query_name="book_query",
                                on_delete=models.CASCADE)
    # 多对多字段
    authors = models.ManyToManyField(to="Author")

第二步:设置访问url(即urls.py文件)

from django.urls import re_path
from xfzapp import views

urlpatterns = [
    re_path(r'books/$', views.BookView.as_view()),
]

第三步:设置视图函数view(即views.py文件)

# 3.1 导入模块
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.response import Response

'''
导入模块的前提条件是,你已经安装Django_rest_framework
'''
# 3.2 导入Book类,获取queryset
from .models import Book origin_data = Book.objects.all()
# 3.3 导入序列化文件,开始序列化
from .xfz_serializers import BookSerializer

serialized_data = BookSerializer(origin_data, many=True)
# 3.4 将序列化后的数据, 响应给客户端
return Response(serialized_data.data)

views.py文件中的完整代码:

# 第一步:导入模块
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Book
from .xfz_serializers import BookSerializer


class BookView(APIView):
    def get(self, request):
        # 第二步:获取queryset,<QuerySet [<Book: Book object (1)>, <Book: Book object (2)>, ... ]>
        origin_data = Book.objects.all()
        # 第三步:开始序列化
        serialized_data = BookSerializer(origin_data, many=True)
        # 第四步:将序列化后的数据, 响应给客户端
        return Response(serialized_data.data)

 

第四步:创建序列化类,由于我们这里是把序列化类单独放在一个py文件的, 所以放在了最后面说这个文件.(建议写完models文件就写这个)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 1.导入模块
from rest_framework import serializers


# 2.创建一个序列化类,字段类型不一定要跟models的字段一致
class BookSerializer(serializers.Serializer):
    nid = serializers.CharField(max_length=32)
    title = serializers.CharField(max_length=128)
    price = serializers.DecimalField(max_digits=5, decimal_places=2)
    # 3.外键字段, 显示__str__方法的返回值
    publish = serializers.CharField(max_length=32, source="publish.city")

    # 4.多对多字段需要自己手动获取数据,SerializerMethodField()
    authors = serializers.SerializerMethodField()
    def get_authors(self, book_obj):
        author_list = list()

        for author in book_obj.authors.all():
            author_list.append(author.name)

        return author_list

    def create(self, book_obj):
        return book_obj

 

转载于:https://www.cnblogs.com/apollo1616/articles/10079699.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 是一个基于 Python 的高级 Web 框架,可以用来快速构建 Web 应用程序和 RESTful API 接口。 下面是使用 Django 框架开发 RESTful API 接口的一般步骤: 1. 安装 DjangoDjango REST framework 在终端中运行以下命令: ``` pip install django pip install djangorestframework ``` 2. 创建 Django 项目 在终端中运行以下命令: ``` django-admin startproject project_name ``` 其中,`project_name` 是自定义的项目名称。 3. 创建 Django 应用程序 在终端中运行以下命令: ``` python manage.py startapp app_name ``` 其中,`app_name` 是自定义的应用程序名称。 4. 配置数据库 在 `settings.py` 文件中配置数据库连接信息。 ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', 'USER': 'user_name', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 其中,`database_name`、`user_name`、`password`、`localhost`、`3306` 都需要替换成实际的数据库连接信息。 5. 创建数据模型 在应用程序的 `models.py` 文件中定义数据模型。 ``` from django.db import models class User(models.Model): name = models.CharField(max_length=50) email = models.EmailField() password = models.CharField(max_length=50) ``` 6. 创建序列化器 在应用程序的 `serializers.py` 文件中创建数据序列化器。 ``` from rest_framework import serializers from .models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__' ``` 7. 创建视图 在应用程序的 `views.py` 文件中创建视图函数。 ``` from rest_framework import viewsets from .models import User from .serializers import UserSerializer class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer ``` 8. 创建路由 在应用程序的 `urls.py` 文件中创建路由。 ``` from django.urls import path, include from rest_framework import routers from .views import UserViewSet router = routers.DefaultRouter() router.register(r'users', UserViewSet) urlpatterns = [ path('', include(router.urls)), ] ``` 9. 运行 Django 项目 在终端中运行以下命令: ``` python manage.py runserver ``` 10. 测试 RESTful API 接口 在浏览器中访问 `http://127.0.0.1:8000/users/`,可以看到所有用户的信息。 在 Postman 等 API 测试工具中测试其他 RESTful API 接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值