zoukankan      html  css  js  c++  java
  • Django REST Framework 最佳实践

    Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs。 
    为什么要使用REST framework? 
    在线可视的API,对于赢得你的开发者们十分有用 

    验证策略涵盖了OAuth1aOAuth2 

    - 同时支持ORM非ORM数据源的序列化 

    - 可以配置各个环节,若无需更多强大的特性,使用一般基于方法(function-based)的视图(views)即可

    大量的文档,强力的社区支持 

    - 大公司如同MozillaEventbrite,也是忠实的使用者

     1.  配置要求

    REST framework 有以下的要求:

    • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
    • Django (1.7+, 1.8, 1.9, 1.11)

    下面是可选的包:

    • Markdown (2.1.0+) - Markdown为可视化 API 提供了支持.
    • django-filter (0.9.2+) - 过滤支持.
    • django-crispy-forms - 为过滤,提供了改良的HTML呈现.
    • django-guardian (1.1.1+) - 对象层面的权限支持.

     2.  安装部署

    使用pip安装框架及所有的你需要的可选依赖包

    1
    2
    3
    pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com djangorestframework
    pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com markdown
    pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com django-filter

    …又或者从github上clone该项目

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

    将 'rest_framework' 添加到你的 'INSTALLED_APPS' 设置里

    1
    2
    3
    4
    INSTALLED_APPS = (
        ...
        'rest_framework',
    )

    如果你需要使用可视化的API,你也许就需要添加REST Framework的登陆/登出视图。在项目的 urls.py文件里,添加下面的内容:

    1
    2
    3
    4
    urlpatterns = [
        ...
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
    ] 

    3.  示例

    让我们看一个简单用例:如何用REST framework 来搭建一个简单的支持modle的API 

    我们将创建一个读/写API,来处理我们项目中的用户信息。 
    任何REST framework的全局设置,都存放在一个配置字典(dictionary,有些语言如Java中的map)中,名为REST_FRAMEWORK

    我们从以下的操作开始,把下面的内容添加到项目的settings.py模块中:

    1
    2
    3
    4
    5
    6
    7
    REST_FRAMEWORK = {
        # 使用Django的标准`django.contrib.auth`权限管理类,
        # 或者为尚未认证的用户,赋予只读权限.
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
        ]
    }

    这是项目目录下urls.py模块:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    from django.conf.urls import url, include
    from django.contrib.auth.models import User
    from rest_framework import routers, serializers, viewsets
     
    # Serializers定义了API的表现.
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = User
            fields = ('url', 'username', 'email', 'is_staff')
     
    # ViewSets 定义了 视图(view) 的行为.
    class UserViewSet(viewsets.ModelViewSet):
        queryset = User.objects.all()
        serializer_class = UserSerializer
     
    # Routers 提供了一种简单途径,自动地配置了URL。
    router = routers.DefaultRouter()
    router.register(r'users', UserViewSet)
     
    # 使用自动的URL路由,让我们的API跑起来。
    # 此外,我们也包括了登入可视化API的URLs。
    urlpatterns = [
        url(r'^', include(router.urls)),
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
    ]

    启动项目 python manage runserver 8000 浏览器 http://127.0.0.1:8000/里,打开新建的’users’ API了

    使用右上角的登陆控制,可以对系统用户进行新增和删除操作

  • 相关阅读:
    【Java集合】试读LinkedList源码
    【Java集合】试读ArrayList源码
    类加载器ClassLoader的理解
    Spring中Bean的不同配置方式
    Spring中Bean的生命周期
    关于反射的一点理解
    Vector与ArrayList 的理解
    java多态的实现原理(JVM调用过程)(综合多篇文章,参考见文末)
    并发编程的模型分类(转载于https://link.zhihu.com/?target=http%3A//www.54tianzhisheng.cn/2018/02/28/Java-Memory-Model/)强烈推荐!
    Thread线程类
  • 原文地址:https://www.cnblogs.com/navysummer/p/8478512.html
Copyright © 2011-2022 走看看