本文主要是用来记录本身学习django-rest-framework的过程。其中可能会有不少本身的错误理解。python
这里主要会用到的知识有django
1. [django](https://www.djangoproject.com/) 2. [django-rest-framework](http://www.django-rest-framework.org/) 3. restful - [百度百科](https://baike.baidu.com/item/RESTful/4406165?fr=aladdin) - [阮一峰理解RESTful架构](http://www.ruanyifeng.com/blog/2011/09/restful) - 其他请自行百度。 4. [python](https://www.python.org/)
本系列中使用的版本号api
1. python3.6 2. django1.11.4 3. django-rest-framework3
官方文档restful
pip install djangorestframework pipinstall django-filter #过滤支持,官方推荐使用
添加 'rest_framework'
到 django
settings
文件的 INSTALLED_APPS
中:架构
INSTALL_APPS = { ... 'rest_framework', }
若是你想使用可视化的API,能够添加以下代码到根urls.py
文件中:学习
urlpatterns = [ ... url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework')), ]
注意这个url能够是任何你想要的,可是必须导入 rest_framework.urls
,而且 namespace必须为rest_framework
。在django1.9+中,你能够不用设置namespace,rest_framework
将会为你设置。url
让咱们来看一个使用 REST framework
构建的简单的 model-backed API.
咱们建立一个 read-write API,来访问咱们项目中用户的信息。
REST framework API 全部的全局设置都放在 settings.py
的 REST_FRAMEWORK
字典中。spa
REST_FRAMEWORK = { # 使用django标准的 'django.contrib.auth'权限,未认证的用户只读权限 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.premissions.DjangoModelPermissionOrAnonReadOnly' ] }
不要忘记将 rest_framework
添加到你的INSTALLED_APPS
中。
咱们如今准备建立咱们的API了。在咱们的根urls.py
模块中:rest
from django.conf.urls import url, include from django.contrib.auth.models import User from rest_framework import routers, serializers, viewsets # Seriallzers 定义这个API的表现 class UserSerializer(serializers.HyperlinkModelSerializer): class Meta: model = User fields = ('url','username','email','is_staff') #ViewSets定义这个API的行为 class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer #Routers提供了一种简单的方式来设置url router = routers.DefaultRouter() router.register(r'users',UserViewSet) #使用URL路由自动链接咱们的API #此外,咱们还添加了一个可视化的Url urlpatterns = [ url('^',include(router.urls)), url('^api-auth/',include('rest_framework.urls'),namesapce='rest_framework'), ]