Django Rest Framework是一个功能强大而且非常灵活的工具,可以用来构建web api。官方给出的优点如下:
The Web browsable API is a huge usability win for your developers.
对开发这来说非常具有可用性的web apiAuthentication policies including packages for OAuth1a and OAuth2.
安全策略,包括一些适用于OAuth1a和OAuth2的包Serialization that supports both ORM and non-ORM data sources.
支持对ORM和非ORM的数据的序列化。Customizable all the way down - just use regular function-based views if you don't need the more powerful features.
具有很高的可客制化性,不想使用那些比较强大的特色功能的话,也可以只使用很常规的views方法。Extensive documentation, and great community support.
广泛的文档资料和社区支持。Used and trusted by internationally recognised companies including Mozilla, Red Hat, Heroku, and Eventbrite.
已经被很多有名的科技公司信任并使用,包括Mozilla, Red Hat, Heroku和Eventbrite
DRF的安装
安装依赖
REST framework的安装依赖如下:
Python(3.5, 3.6. 3.7)
Django(1.11, 2.0, 2.1, 2.2)
另外可以根据选择安装:
coreapi(1.32.0+) - Schema generation support.
Markdown (3.0.0+) - Markdown support for the browsable API.
Pygments (2.4.0+) - Add sytax highlighting to Markdown processing.
django-filter (1.0.1+) - Filtering support.
django-guardian (1.1.1+) - Object level permissions support.
安装配置
可以使用pip进行安装
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
将'rest_framework'添加到项目settings.py文件中的INSTALLED_APPS中:
INSTALLED_APPS = ( ... 'rest_framework',)
如果你想使用可视化的API,你可以添加REST framework的login和logout的视图。可以添加如下信息到你项目的urls.py文件中:
urlpatterns = [ ... path('^api-auth/', include('rest_framework.urls'))]
使用示例
安装并配置好之后,我们可以来做一个简单的api示例。
我们可以直接使用django自带的User模型。
我们可以将REST framework的一些全局的配置项以一个字典(名称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' ]}
为了简单起见,我们直接在urls.py文件中添加如下信息:
from django.conf.urls import url, 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('api-auth/', include('rest_framework.urls')), path('', include(router.urls)) ]
然后,我们现在可以打开浏览器,输入地址http://127.0.0.1:8000去看一下:
使用我们创建好的superuser登陆或者直接将刚setting.py文件中添加的REST_FRAMEWORK中的内容注释掉。我们就可以
尝试在页面通过POST请求添加一个user。
再将刚才注释的内容打开,发现我们在没有登陆情况下,已经没有通过POST添加user的权限了。
你可以登陆一下,尝试一下其它的一些操作。
这样,Django REST framework看上去是不是很简单的就上手了?
本文中的源码可以在Github上查看。点我查看本文源码
转载请注明:禅思 » Django Rest Framework学习总结-0:安装和简例?