zoukankan      html  css  js  c++  java
  • Django REST framework 简介

    需求

    REST framework需要如下:

    • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
    • Django (1.10, 1.11, 2.0)

    下面的文件包可以选择性安装

    安装

    pip安装:

    pip install djangorestframework
    pip install markdown       # Markdown 为可浏览的API提供服务
    pip install django-filter  # 支持分类

    ...or clone the project from github.

    git clone git@github.com:encode/django-rest-framework.git

    把'rest_framework'加入到settings里面的INSTALLED_APPS:

    INSTALLED_APPS = [
        ....
        'app01.apps.App01Config',
        'rest_framework',
    ]

    如果你想要使用可浏览的API,就需要添加REST framework的登陆和推出视图。然后把下面的路由加入到根目录下的urls.py文件内

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('rest_framework.urls')),
    ]

    当然啦,url的路径名称可以随便命名。

    简单实例

    一起通过一个快速简单的实例,使用REST framework建立简单的模型-后端API

    这个实例将会创建一个可读可写的API,访问刚刚创建的项目里面用户权限信息服务。

    任何关于REST framework API全局的设置,都被存放在一个单独的配置字典中(REST_FRAMEWORK),添加下面的设置到项目的settings.py文件中。

    REST_FRAMEWORK = {
        # 使用Django标准的django.contrib.auth权限或者允许未认证用户有只读权限
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
        ]
    }

    不要忘记你已经添加rest_framework到settings文件的INSTALLED_APPS.

    快速开始

    首次创建一个Django project,再创建一个app

    同步一下数据库在terminal里面输入

    shuais-MBP:TestApp dandyzhang$ python3 manage.py migrate

    创建一个初始用户admin,密码password.1在下面的过程中需要用这个账户做验证。

    python manage.py createsuperuser

    上面的都配置好了,就可以正式开始撰写代码了。

    Serializers 

    首先,需要定义一些serializers,创建一个新的py文件在新建的app内部'serializers.py',用来做数据表示。

    from django.contrib.auth.models import User, Group
    from rest_framework import serializers
    
    
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = User
            fields = ('url', 'username', 'email', 'groups')
    
    
    class GroupSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = Group
            fields = ('url', 'name')

    注意在这个案例里,我们使用了超链接关系HyperlinkedModelSerializer,你也可以使用主键和各种其他的关系,但是超链接hyperlinking是很好的RESTful设计。

    Views  

     现在,需要写一些视图了。打开新建的app内的view.py文件开始撰写

    from django.contrib.auth.models import User, Group
    from rest_framework import viewsets
    from app01.serializers import UserSerializer, GroupSerializer
    
    # Create your views here.
    
    
    class UserViewSet(viewsets.ModelViewSet):
        """
        API终端允许用户被查看或者编辑
        """
        queryset = User.objects.all().order_by('-date_joined')
        serializer_class = UserSerializer
    
    
    class GroupViewSet(viewsets.ModelViewSet):
        """
        API终端允许群组被查看或者
        """
        queryset = Group.objects.all()
        serializer_class = GroupSerializer

    相比于撰写多个视图,我们更推荐把所有的共同行为组合到类称做视图集ViewSets的类中

    如果需要的话,可以很轻易的把这些分解成单独的视图,但是使用视图集ViewSets让视图的逻辑保持的更好更整洁。

    URLS

    现在在Django项目的主urls文件中写入API URLs.

    from django.contrib import admin
    from django.urls import path, include
    
    
    from rest_framework import routers
    from app01 import views
    
    router = routers.DefaultRouter()
    router.register(r'users', views.UserViewSet)
    router.register(r'groups', views.GroupViewSet)
    
    # API 使用自动的URL路线
    # 另外,添加了可浏览的API,包括登陆urls
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('rest_framework.urls', namespace='rest_framework')),
        path('', include(router.urls)),
    ]

    因为使用了视图集代替视图,我们可以自动为API生成URL的配置,通过路由类在视图集做简单的注册。

    另外,如果需要对API URLs进行更多的控制,可以简单的使用常用的基于类的视图,并显式地编写URL CONF

    最后,在可视化的API中包括了默认的登陆登出视图供使用。那是可选择的,但如果你的API需要认证并且你想使用可浏览的API那就很有用了。

    Settings

    添加'rest_framework' 到 INSTALLED_APPS. 总目录下的settings文件内

    好了,我们已经完成了所有的工作了。

    测试API

    现在将要测试已经建立好的API。让我们首先开启这个项目的web服务。

    打开浏览器,因为之前提过可浏览的API是可以不用登陆的

    进入users

    上面的数据是需要自己添加的,可以启用django admin添加,也可以直接在数据进行添加。

  • 相关阅读:
    springnodejs
    js CacheQueue
    权重练习
    架构师速成8.3-可用性之分库分表
    架构师速成8.3-可用性之分布式
    架构师速成8.3-可用性
    架构师速成8.3-架构师必须要了解的规则(转)
    架构师速成6.15-开发框架-单点登录
    架构师速成6.14-开发框架-异常处理
    架构师速成6.13-开发框架-前后结合
  • 原文地址:https://www.cnblogs.com/wuzdandz/p/9452344.html
Copyright © 2011-2022 走看看