Django REST Framework 快速入门指南:核心特性、安装与示例
本文详细介绍 Django REST Framework (DRF) 的核心功能与优势,涵盖 Web 浏览支持、OAuth 验证、数据序列化及权限控制等特性。文章提供了从环境要求、pip 安装到配置 settings.py 和 urls.py 的完整步骤,并通过一个用户信息读写 API 的完整代码示例,展示如何快速构建基于 Django 的 RESTful API。
本文主要探讨 Django REST Framework 的相关应用,并通过具体示例进行说明。
Django REST Framework(简称 DRF)是一套用于构建 Web API 的强大且灵活的工具集。
选择使用 Django REST Framework 的原因通常包括以下几点:
- 它提供了支持 Web 浏览的 API,极大提升了开发人员的用户体验和可用性。
- 内置了多种验证策略,包括支持 OAuth1a 和 OAuth2 的认证包。
- 支持对 ORM 和非 ORM 数据源进行序列化操作。
- 如果不需要更复杂的功能,开发者可以完全自定义,甚至仅使用基于函数的常规视图即可。
- 拥有详尽的文档以及活跃的社区支持。
- 该框架已被 Mozilla、Red Hat、Heroku 和 Eventbrite 等国际知名公司广泛使用并信赖。
系统要求
运行 REST 框架需要满足以下基础条件:
- Python 版本需为 2.7, 3.2, 3.3, 3.4, 或 3.5。
- Django 版本需为 1.8, 1.9, 或 1.10。
此外,以下软件包为可选安装项:
- coreapi(版本 1.32.0 及以上)- 用于支持模式生成。
- Markdown(版本 2.1.0 及以上)- 提供可浏览 API 的 Markdown 渲染支持。
- django-filter(版本 1.0.1 及以上)- 提供数据过滤支持。
- django-crispy-forms - 用于改进 HTML 表单的显示效果。
- django-guardian(版本 1.1.1 及以上)- 提供对象级别的权限支持。
安装步骤
使用 pip 进行安装,可根据需要包含任何可选包:
pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support
将 'rest_framework' 添加到您的 INSTALLED_APPS 设置中。
INSTALLED_APPS = ( ... 'rest_framework', )
如果您计划使用可浏览的 API 界面,可能还需要添加 REST 框架提供的登录和注销视图。请将以下代码添加到您的根 urls.py 文件中:
urlpatterns = [
...
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
请注意,URL 路径可以自定义为任意名称,但必须在 rest_framework 的命名空间内包含 'rest_framework.urls'。在 Django 1.9+ 版本中,您可以省略显式命名空间,REST 框架会自动为您处理。
代码示例
接下来,我们将通过一个使用 REST 框架构建的简单模型支持 API 示例来演示。
我们的目标是创建一个能够读写访问项目用户信息的 API。
REST 框架 API 的所有全局设置都保存在名为 REST_FRAMEWORK 的单一配置字典中。首先,请将以下内容添加到 settings.py 模块中:
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}
请确保您已在 INSTALLED_APPS 中添加了 rest_framework。
准备工作完成后,即可创建我们的 API。以下是项目根目录下的 urls.py 模块配置:
from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
#Serializers定义API表示。
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'is_staff')
#ViewSets定义视图行为。
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
#路由器提供了一种自动确定URL conf的简单方法。
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
#使用自动网址路由连接我们的API。
# 另外,我们还包括可浏览的API的登录URL。
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
现在,您可以在浏览器中访问 http://127.0.0.1:8000/ 来查看新的“用户”API。如果您使用界面右上角的登录控件,还可以从系统中添加、创建和删除用户。
总结
以上即为 Django REST Framework 的基本介绍与完整示例,希望能为读者提供帮助。感兴趣的朋友可继续查阅本站其他相关专题,如有不足之处,欢迎留言指正。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









