Django-Rest-Framework 入门
来源:互联网 发布:erp软件的作用 编辑:程序博客网 时间:2024/04/28 05:51
http://www.django-rest-framework.org/
http://www.weiguda.com/blog/18/
本篇中, 我们会创建一个简单的API, 用来查看和编辑django默认的user和group数据.
1. 设置
我们创建django项目tutorial, 和app quickstart:
# 创建新Django项目 django-admin.py startproject tutorial cd tutorial # 使用virtualenvwrapper创建Virtualenv mkvirtualenv env workon env # 在env中安装Django 和 Django REST framework# 创建新app python manage.py startapp quickstartpip install djangorestframeworkpip install markdown # Markdown support for the browsable API.pip install django-filter # Filtering support
然后根据自己的数据库配置设置数据库:
# tutorial/settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'database_name', 'USER': 'database_user', 'PASSWORD': 'database_password', 'HOST': '', 'PORT': '' } } ... INSTALLED_APPS = ( ... 'quickstart', 'rest_framework', ) REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',), 'PAGINATE_BY': 10 }
最后同步数据库
python manage.py makemigrationspython manage.py migrate
2.序列化 接下来我们创建用于数据序列化的代码
# serializers.pyfrom django.contrib.auth.models import Groupfrom .models import User,Restfrom rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ('url', 'id', 'username', 'email', 'is_staff')class GroupSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Group fields = ('url', 'name')class RestSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Rest fields = ('url', 'user', 'password')
值得注意的是, 我们使用的是HyperlinkedModelSerializer. 你可以使用主键或者其他关系, 但使用HyperlinkedModelSerializer是一个好的 RESTful 设计.
3. Views
#views.pyfrom django.contrib.auth.models import Groupfrom rest_framework import routers, serializers, viewsetsfrom serializers import UserSerializer,GroupSerializer,RestSerializer# ViewSets define the view behavior.class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializerclass GroupViewSet(viewsets.ModelViewSet): queryset = Group.objects.all() serializer_class = GroupSerializerclass RestViewSet(viewsets.ModelViewSet): queryset = Rest.objects.all() serializer_class = RestSerializer
在django_rest_framework中, 所有常见的行为都被归到了ViewSets中. 当然我们可以将这些行为分拆出来, 但使用ViewSets, 使view的逻辑更为清楚.
使用queryset和serializer_class代替model变量, 使我们能更加好的控制API行为, 这也是我们推荐的使用方式.
4. URLs
from django.conf.urls import url,includefrom blog.views import *# Routers provide an easy way of automatically determining the URL conf.from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'users', UserViewSet)router.register(r'groups', GroupViewSet)router.register(r'rest', RestViewSet)urlpatterns = [ url(r'^$', index, name='index'), url(r'^archive/$', archive, name='archive'), url(r'^article/$', article, name='article'), url(r'^category/$', category, name='category'), url(r'^tags/$', tags, name='tags'), url(r'^comment/post/$', comment_post, name='comment_post'), url(r'^logout$', do_logout, name='logout'), url(r'^login', do_login, name='login'), url(r'^reg', reg, name='reg'), #ajax url(r'^data/(?P<id>\d+)/$', data), url(r'^update/', update), url(r'^senddate/', senddate), #rest api url(r'^api/', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),]
因为我们使用的是viewset, 所以我们可以使用route class自动生成url conf.
5. 测试
至此我们的设置完成, 可以测试我们的REST API了, 首先启动django服务器:
python ./manage.py runserver
我们可以使用postman直接使用浏览器也可以:
原文链接: http://www.weiguda.com/blog/18/
0 0
- Django-Rest-Framework 入门
- Django-Rest-Framework 教程: 快速入门
- Django-Rest-Framework 教程: 快速入门
- python django rest framework 快速入门
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- django rest framework quickstart
- Django rest framework
- Django rest framework --- Routers
- Django rest framework ---Serializers
- Django Rest Framework - 初识
- django-REST framework
- Django rest framework权限
- Django REST framework-Quickstart
- 发布客户化PLSQL APIs到Oracle Integration Repositoy(IREP)
- 一些常用的正则
- 委托中的invoke和begininvoke
- DOCKER windows安装
- Javascript 严格模式use strict详解
- Django-Rest-Framework 入门
- 论文笔记 FCN: Fully Convolutional Networks for Semantic Segmentation
- 9 接口描述语言 slice
- IDEA运行web工程报错,Error running wis-client-web: SSL HTTP Connector node not found: set up one in the ser
- javascript Thunk深入解析
- 构建安全的Ajax WCF服务
- 校验单元格是否为空
- 《卡尔曼滤波原理及应用-MATLAB仿真》程序-4.4
- Android按键事件传递流程(一)