Django REST框架
是构建Web API
的强大而灵活的工具包。
您可能希望使用REST框架的一些原因:
REST框架需要以下内容:
以下软件包是可选的:
Install using pip, including any optional packages you want…
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
Add'rest_framework'
to your INSTALLED_APPS
setting.
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,并查看新的“用户”API。 如果您使用右上角的登录控件,您还可以从系统添加,创建和删除用户。