【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 登录

相关推荐
_ku_ku_3 小时前
数据库系统原理 · 事务管理与恢复 · 自学总结
数据库·oracle
Yang96115 小时前
无损精准查缆:鼎讯 G-340A 在铁路高速场景的应用
网络·信息与通信
开开心心就好5 小时前
免费流畅的远程控制实用工具
linux·运维·服务器·网络·智能手机·excel
银河外卖员6 小时前
VMware 虚拟机安装 Windows 10 系统详细图文教程
windows·vmware
渣渣灰95877 小时前
Windows 10 环境部署 Claude Code 教程
windows·vscode·calude code
yyuuuzz7 小时前
aws的核心概念与常见使用场景
运维·服务器·网络·云计算·aws
元Y亨H8 小时前
Windows 内置管理员 (Administrator) 账户重命名指南
windows
水饺编程8 小时前
第5章,[Win32 章节] :几种典型的颜色
c语言·c++·windows·visual studio
ElevenS_it1888 小时前
网络没完全断但业务已经受影响:「灰色故障」排查的完整方法论
运维·服务器·网络
STDD8 小时前
Samba 文件共享:Linux 服务器与 Windows/Mac 共享文件夹
linux·服务器·windows