【Django进阶】django-rest-framework中文文档——快速入门

【Django进阶】django-rest-framework中文文档------快速入门

简介

Django REST 框架是一个强大且灵活的工具包,用于构建 Web API。 您可能想要使用 REST 框架的一些原因:

  • Web可浏览 API为您的开发人员带来了巨大的可用性优势。

  • 身份验证策略包括OAuth1a和OAuth2的包。

  • 支持ORM和非 ORM数据源的序列化。

  • 完全可定制 -如果您不需要更强大的功能,只需使用常规的基于函数的视图即可。

  • 广泛的文档和强大的社区支持。

  • 受到Mozilla、Red Hat、Heroku和Eventbrite等国际知名公司的使用和信任。

安装要求

REST 框架需要以下内容:

  • Python(3.6、3.7、3.8、3.9、3.10)

  • Djnago(2.2、3.0、3.1、3.2、4.0、4.1

强烈推荐并仅官方支持每个 Python 和 Django 系列的最新补丁版本。 以下软件包是可选的:

  • PyYAML、uritemplate (5.1+、3.0.0+) - 模式生成支持。

  • Markdown (3.0.0+) - 对可浏览 API 的 Markdown 支持。

  • Pygments (2.4.0+) - 在 Markdown 处理中添加语法突出显示。

  • django-filter (1.0.1+) - 过滤支持。

  • django-guardian (1.1.1+) - 对象级权限支持。

安装

pip install djangorestframework djangorestframework本身是一个应用程序,需要使用必须在setting.py文件中注册

复制代码
INSTALLED_APPS = [
    ...
    'rest_framework',
]

如果您打算使用可浏览的 API,您可能还需要添加 REST 框架的登录和注销视图。将以下内容添加到您的根urls.py文件中。UR路径可以是您想要的任何路径。

复制代码
urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]

快速使用

我们将创建一个简单的 API 来允许管理员用户查看和编辑系统中的用户和组。

项目设置

创建一个名为 的新 Django 项目tutorial,然后启动一个名为 的新应用程序quickstart。

复制代码
# 创建tutorial并切换到tutorial目录
mkdir tutorial
cd tutorial
​
# 创建虚拟环境,并进入虚拟环境
python3 -m venv env
source env/bin/activate  # 如果是Windows使用`env\Scripts\activate`
​
# 安装Django和djangorestframework
pip install django
pip install djangorestframework
​
# 创建名称为tutorial的项目,再创建名称为quickstart的应用程序
django-admin startproject tutorial
cd tutorial
django-admin startapp quickstart
cd ..

截图使用Pycharms创建项目与应用程序,自动安装Django

项目布局
复制代码
$ pwd
<some path>/tutorial
$ find .
.
./manage.py
./tutorial
./tutorial/__init__.py
./tutorial/quickstart
./tutorial/quickstart/__init__.py
./tutorial/quickstart/admin.py
./tutorial/quickstart/apps.py
./tutorial/quickstart/migrations
./tutorial/quickstart/migrations/__init__.py
./tutorial/quickstart/models.py
./tutorial/quickstart/tests.py
./tutorial/quickstart/views.py
./tutorial/asgi.py
./tutorial/settings.py
./tutorial/urls.py
./tutorial/wsgi.py
同步数据库
复制代码
python manage.py migrate

默认使用的是sqlite数据库,需安装驱动

创建后台管理员
复制代码
python manage.py createsuperuser --email admin@example.com --username admin

创建用户名为admin,密码为password123,后面将会使用示例中用该身份进行验证。

通过以上步骤已完成项目和应用程序的创建,同步了数据库以及创建初始用户。

序列化

自定义序列化器,创建一个模块tutorial/quickstart/serializers.py,也可以在应用程序目录下新建存放序列化器的文件

复制代码
from django.contrib.auth.models import User, Group  #导入model中的数据库模块
from rest_framework import serializers  #导入序列化器
​
​
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']
​
​
class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

请注意,在本例中我们使用的是超链接关系HyperlinkedModelSerializer。您还可以使用主键和各种其他关系,但超链接是很好的 RESTful 设计。

Views

打开tutorial/quickstart/views.py添加视图信息

复制代码
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_framework import permissions
from quickstart.serializers import UserSerializer,GroupSerializer
​
class UserViewSet(viewsets.ModelViewSet):
    """
    允许查看或编辑用户的API.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]  #设置权限,只有登录成功的用户可以访问接口API
​
class GroupViewSet(viewsets.ModelViewSet):
    """
    允许查看或编辑组的API.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]
   

URLS

编辑tutorial/urls.py

复制代码
from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)


urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

分页

分页允许您控制每页返回的对象数量。要启用它,请将以下行添加到tutorial/settings.py

复制代码
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

设置

添加。'rest_framework'_ INSTALLED_APPS设置模块将位于tutorial/settings.py

复制代码
INSTALLED_APPS = [
    ...
    'rest_framework',
]

测试URL

访问测试URL http://127.0.0.1:8000/users/ 先点击右上角LOGIN IN 登录

相关推荐
燃烧的枫1 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
发光小北1 小时前
EtherNet/IP 转 ModbusTCP 网关现场应用中会遇到什么问题?
服务器·网络·tcp/ip
海宇大数据1 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化
猪八宅百炼成仙2 小时前
让 AI 帮你清理电脑而不翻车:一个 Windows 体检调优 Skill 的工程化设计
人工智能·windows
tongyiixiaohuang2 小时前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
一只鹿鹿鹿3 小时前
智算算力、AI-芯片与产品解析(PPT文件)
大数据·运维·网络·人工智能·物联网·1024程序员节
鱼宵3 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21
开源必胜3 小时前
Socket、异步非阻塞 I/O 与 NGINX、Netty 模型
网络·tcp/ip·nginx
沫璃染墨3 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
kingx34 小时前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固