Django REST Framework Demo


一、Django REST Framework简介

django做后端api服务的一种常用插件,django-rest-framework(DRF)提供了许多好用的特性。 Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。通常简称为DRF框架 或 REST framework。DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化; 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要; 多种身份认证和权限认证方式的支持; 内置了限流系统; 直观的 API web 界面; 可扩展性,插件丰富

官网: https://www.django-rest-framework.org/
https://www.django.cn

二、Demo使用步骤

2.1

开发REST API接口时,我们在视图中需要做的最核心的事是:将数据库数据序列化为前端所需要的格式,并返回;
将前端发送的数据反序列化为模型类对象,并保存到数据库中。

2.2

命令行输入命令安装:

pip install django-rest-framework

创建一个新的名为books的应用:

python manage.py startapp books

将DRF和books配置到django项目中:

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ## demo增加
    'rest_framework',
    'books',
]

models.py文件中写简单数据类Books:

# books/models.py
from django.db import models


class Books(models.Model):
    name = models.CharField(max_length=30)
    author = models.CharField(max_length=30, blank=True, null=True)

books文件夹中创建serializer.py文件,并写对应序列化器BooksSerializer:

# books/serializer.py
from rest_framework import serializers

from books.models import Books


class BooksSerializer(serializers.ModelSerializer):
    class Meta:
        model = Books
        fields = '__all__'

views.py文件中写对应的视图集BooksViewSet来处理请求:

# books/views.py
from rest_framework import viewsets

from books.models import Books
from books.serializer import BooksSerializer


class BooksViewSet(viewsets.ModelViewSet):
    queryset = Books.objects.all()
    serializer_class = BooksSerializer

整个项目的路由进行配置

# book_demo/settings.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('books.urls')), # demo add
] 

在urls.py文件中写对应的路由映射

# books/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter

from books import views

router = DefaultRouter()
router.register('books', views.BooksViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

2.3

到这里,可以运行一下后端项目看看效果,命令行运行:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

得益于DRF提供的api可视化界面,浏览器访问127.0.0.1:8000/api/books/
在这里插入图片描述

我们也想设置一些全局设置。我们想打开分页,我们希望我们的API只能由管理员使用

REST_FRAMEWORK = {
    
    
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAdminUser',
    ],
    'PAGE_SIZE': 10
}

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_35911309/article/details/112777651
今日推荐