本文主要是用来记录自己学习django-rest-framework的过程。其中可能会有很多自己的错误理解。
这里主要会用到的知识有
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/)
本系列中使用的版本号
1. python3.6
2. django1.11.4
3. django-rest-framework3
安装
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
将会为你设置。
例子
让我们来看一个使用 REST framework
构建的简单的 model-backed API.
我们创建一个 read-write API,来访问我们项目中用户的信息。
REST framework API 所有的全局设置都放在 settings.py
的 REST_FRAMEWORK
字典中。
REST_FRAMEWORK = {
# 使用django标准的 'django.contrib.auth'权限,未认证的用户只读权限
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.premissions.DjangoModelPermissionOrAnonReadOnly'
]
}
不要忘记将 rest_framework
添加到你的INSTALLED_APPS
中。
我们现在准备创建我们的API了。在我们的根urls.py
模块中:
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'),
]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。