Django REST framework-教程00-quickstart原创翻译
来源:互联网 发布:张玮 high 知乎 编辑:程序博客网 时间:2024/05/16 10:42
python技术交流群332680349,资源分享,技术交流。
01-目的
创建一个简单的API去让管理员在系统里查看和编辑用户和组。
02-项目配置
创建一个Django项目名叫tutorial,然后创建一个新app叫quickstart。
mkdir tutorialcd tutorialvirtualenv envenv\Scripts\activatepip install djangopip install djangorestframeworkdjango-admin.py startproject tutorial . cd tutorialdjango-admin.py startapp quickstartcd ..
第一时间同步数据库
python manage.py makemigrationspython manage.py migrate
创建一个超级管理员,admin,密码是:password23,我们稍后会用到它。
python manage.py createsuperuser
03-串行器
首先我们先定义一些序列化类,创建一个新模块用于展示数据(类似于form表单)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设计。
04-视图
呦吼,我们最好再写一些视图,打开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 endpoint that allows users to be viewed or edited. """ queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializerclass GroupViewSet(viewsets.ModelViewSet): """ API endpoint that allows groups to be viewed or edited. """ queryset = Group.objects.all() serializer_class = GroupSerializer
跟写多个视图相比,我们要把相同的属性行为封装到类中叫视图集合ViewSets类。
我们也可以轻松地把视图集合分解为视图,但是视图集合可以使试图的逻辑很好的组织起来,并且非常简洁。
05-URLs
在tutorial/urls.py写一个API的url
from django.conf.urls import url, includefrom rest_framework import routersfrom tutorial.quickstart import views#路由router = routers.DefaultRouter()router.register(r'users', views.UserViewSet)router.register(r'groups', views.GroupViewSet)# Wire up our API using automatic URL routing.# Additionally, we include login URLs for the browsable API.urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
因为我们用视图集合代替视图,所以我们可以简单的使用路由类注册这个视图集合来自动生成API需要的URL
而且,如果我们需要对API的urls进行更多的操作,我们可以很轻松的在常规基类的视图中操作它,并且明确url的配置
最后,我们将设置默认登陆和未登录视图是否能查看API数据。这是可选则的,但是如果你需要对你的的API进行身份验证才能使用你的API查看数据,那这就非常有用了。
06-设置
我们想去设置一些全局设置,例如我们想设置分页数量,并且我们只希望我们的API只能被我们的管理员用户修改。我么你在这个模块编写:tutorial/settings.py
INSTALLED_APPS = ( ... 'rest_framework',)REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser', ], 'PAGE_SIZE': 10}
08-测试我们的API
测试我们的API,通过命令行启动。
python manage.py runserver
第一种方式:
我们可以从命令行访问我们的API,用工具像cur。。
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/…
注意确保登陆才能查看数据(这种最直观)
- Django REST framework-教程00-quickstart原创翻译
- django rest framework quickstart
- Django REST framework-Quickstart
- Django REST framework-教程01-Serialization原创翻译
- Django REST framework-教程03-class-based views原创翻译
- Django REST framework-教程02-Requests and Responses原创翻译
- Django REST framework-教程04-Authentication and Permissions原创翻译
- Django REST framework-教程05-Relationships and Hyperlinked 原创翻译
- Django REST framework-教程06-ViewSets and Routers 原创翻译
- django rest framework--quickstart[中文文档]
- Django REST framework-API指南01-Requests 原创翻译
- Django REST framework-API指南02-Responses 原创翻译
- Django REST framework-API指南04-Generic views 原创翻译
- Django REST framework-API指南05-ViewSets 原创翻译
- Django-Rest-Framework 教程
- Django REST framework(官方教程)
- Django REST framework 截图教程
- Django REST framework-API指南03-Class-based Views 原创翻译
- fudandemo
- 控制不好情绪,读这9句话
- 【AC自动机】地图匹配
- 51nod 1791 合法括号子段 (dp)
- vue-cli 脚手架
- Django REST framework-教程00-quickstart原创翻译
- Spring入门笔记(五)@Autowired注解
- 升序单链表删除重复值,输出
- rocoo hotfix之后进App卡住
- Leetcode之Search for a Range 问题
- 求二叉树的深度
- linux性能分析命令ps,top,vmstat 使用
- AOP面向切面
- JRE环境配置中path,Java_home,classpath区别