文章目录
- 前言
- 一、环境安装与配置
- 二、安装
- 三、案例
- 1.settings.py配置
- 2.urls.py使用
前言
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)
- Django (2.2, 3.0, 3.1, 3.2, 4.0)
我们强烈推荐并仅正式支持每个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
代码语言:javascript复制pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
或从 github 克隆项目:git clone https://github.com/encode/django-rest-framework
我们利用在Django框架学习中创建的demo工程,在settings.py的INSTALLED_APPS中添加’rest_framework’。
代码语言:javascript复制INSTALLED_APPS = [
...
'rest_framework',
]
如果您打算使用可浏览的API,您可能还需要添加REST框架的登录和注销视图。将以下内容添加到根文件中。urls.py
urlpatterns = [
...
path('api-auth/', include('rest_framework.urls'))
]
请注意,URL 路径可以是您想要的任何路径。
三、案例
1.settings.py配置
代码语言:javascript复制INSTALLED_APPS = [
...
'rest_framework',
]
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'
]
}
2.urls.py使用
代码语言:javascript复制from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['url', 'username', 'email', 'is_staff']
# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]