django rest framework--quickstart[中文文档]
来源:互联网 发布:python pyswip 编辑:程序博客网 时间:2024/04/29 23:07
快速入门
我们现在就创建一个简单的API,允许管理员在系统中查看和编辑用户及组。
创建项目
创建一个Django项目叫做tutorial,然后新建一个app叫quickstart。
# 创建项目所属文件夹mkdir tutorialcd tutorial# 创建虚拟环境source env/bin/activate # windows上使用 `env\Scripts\activate`# 在虚拟环境中安装Django和Django REST frameworkpip install djangopip install djangorestframework# 创建一个Django项目,并只有一个appdjango-admin.py startproject tutorial . # 注意末尾的"."cd tutorialdjango-admin.py startapp quickstartcd ..
现在进行第一次数据库的同步:
python manage.py migrate
同时也创建一个超级用户admin,密码为password123。我们在后面的认证中会用到。
python manage.py createsuperuser
一旦你已经完成数据库的同步并且创建了超级用户,那么我们就可以开始进入项目文件夹敲代码了。。。^_^
序列化
第一步,我们需要定义一些序列化类。先在/tutorial/quickstart/下创建一个新的模块serializers.py,在表现数据的时候会用到。
from django.contrib.auth.models import User, Groupfrom rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ('url', 'username', 'email', 'groups')class GroupSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Group fields = ('url', 'name')
请注意我们在这几个例子中使用了超链接的关系,每个类都继承HyperlinkedModelSerializer。你也可以用主键和很多其他的关系来搞定,不过超链接是一种很棒的RESTful设计。
视图
我们要开始写一些视图了,所以打开tutorial/quickstart/views.py开始敲代码吧。
from django.contrib.auth.models import User, Groupfrom rest_framework import viewsetsfrom tutorial.quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet): """ 允许用户查看和编辑的API节点 """ queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializerclass GroupViewSet(viewsets.ModelViewSet): """ 允许组查看和编辑的API节点 """ queryset = Group.objects.all() serializer_class = GroupSerializer
与其写一堆视图,我们更倾向去把通用的行为写进视图集的类中。
如果我们需要的话,我们可以很容易的把他们分离成独立的视图,而且使用视图集可以保证视图逻辑的组织性和简洁性。
路由
OK,现在开始编写API的路由,编辑tutorial/urls.py。
from django.conf.urls import url, includefrom rest_framework import routersfrom tutorial.quickstart import viewsrouter = routers.DefaultRouter()router.register(r'users', views.UserViewSet)router.register(r'groups', views.GroupViewSet)# 我们使用自动的路由分发,并添加了登录的路由urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
因为我们使用了视图集来代替普通视图,这样子我们通过router这个类注册视图集以便自动的为API生成路由。
另外,如果我们需要对API的路由做更多的控制,我们也可以通过继承views这个基类,把路由的配置写的更明了。
最后,在可视化的API中,我们已经为用户默认添加了登录和登出的视图。当你想要使用可视化的API,并且需要认证的时候,这玩意就派上用场了。
设置
我们现在需要进行一些全局的设置了。我们想要搞个分页的功能,并且只想让我们的API被管理员调用。这些设置都需要在tutorial/settings.py中进行。
INSTALLED_APPS = ( ... 'rest_framework',)REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser', ], 'PAGE_SIZE': 10}
Bingo! 搞定!
测试API
我们现在需要测试我们创建的API,让我们在命令行中启动服务吧。
python manage.py runserver
我们可以调用我们的API,通过命令行的方式。比如使用工具(命令)curl:
bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/{ "count": 2, "next": null, "previous": null, "results": [ { "email": "admin@example.com", "groups": [], "url": "http://127.0.0.1:8000/users/1/", "username": "admin" }, { "email": "tom@example.com", "groups": [ ], "url": "http://127.0.0.1:8000/users/2/", "username": "tom" } ]}
或者在命令行使用httpie:
bash: http -a admin:password123 http://127.0.0.1:8000/users/HTTP/1.1 200 OK...{ "count": 2, "next": null, "previous": null, "results": [ { "email": "admin@example.com", "groups": [], "url": "http://localhost:8000/users/1/", "username": "paul" }, { "email": "tom@example.com", "groups": [ ], "url": "http://127.0.0.1:8000/users/2/", "username": "tom" } ]}
或者说直接使用浏览器,通过访问http://127.0.0.1:8000/users/…
如果你正在使用浏览器进行访问,那么你需要从右上角的进行登录。
so easy!
如果你想要更加深入的学习并理解REST framework原理,那就好好看官网接下来的文档吧。或者接着看我的系列博客吧。^_^
官方文档:http://www.django-rest-framework.org/
- django rest framework--quickstart[中文文档]
- django rest framework quickstart
- Django REST framework-Quickstart
- Django REST framework-教程00-quickstart原创翻译
- 学习使用"Django REST framework"打造RESTful API接口——第一节 quickstart
- Django Rest Framework - 实例PartyDemo 之 API文档
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- Django rest framework
- Django rest framework --- Routers
- Django rest framework ---Serializers
- Django-Rest-Framework 入门
- Django Rest Framework - 初识
- django-REST framework
- POJ 1273 Drainage Ditches
- duilib combo 滚动条不起作用
- GridLayout的使用及问题处理
- sublime_text3的使用
- 键盘输入
- django rest framework--quickstart[中文文档]
- 线程基础总结
- java传统框架ssh---struts、spring、hibernate框架的搭建
- javascript for mvvm
- 嵌入式ARM驱动蜂鸣器
- 按钮控件JButton的使用
- TaintDroid深入剖析之启动篇
- session基础
- sending context initialized event to listener instance of class org.springframework.web.context.Cont