# nuoxiao api
    Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包。

# 环境搭建,软件安装
    pip install django  # django
    pip install djangorestframework     # rest api
    pip install pygments     # 我们将使用它来实现代码高亮
    pip install coreapi     #
    pip install schema      #
    pip install markdown    # Markdown支持可浏览的API
    pip install django-crispy-forms     # csrf验效, 基于中间件的process_view方法实现对请求的csrf_token验证
    pip install django-guardian # 支持对象级别的权限控制
    pip install django-filter   # 搜索过滤
    pip install django-cors-headers   # 跨域访问,安装django-cors-headers  API通常都是由不同域名来进行调用,放在CsrfViewMiddleware之前
    pip install pymysql    # mysql数据库
    pip install whitenoise 
    
    只需简单地修改Config文件,用户就可以按自己的意图来以静态文件方式部署Web应用,而不必依赖于Nginx、亚马逊S3等外部服务。Whitenoise能对打包内容进行压缩并设置高容量的缓存。

  遵循WSGI规范的应用需要在部署时对Whitenoise配置进行调整:

    from whitenoise import WhiteNoise

    from my_project import MyWSGIApp

    application = MyWSGIApp()
    application = WhiteNoise(application, root='/path/to/static/files')
    application.add_files('/path/to/more/static/files', prefix='more-files/')
  这样做的重要性是什么?使用Gzip可有效地减少静态文件体积和页面载入。但是搜索引擎会侦测到Gzip压缩,这会导致网站不执行Gzip。所以需要透过上述修改来避免这种情况。
  

# Premissions
     顾名思义就是权限管理,用来给
    # ViewSet
     设置权限,使用
    # premissions
      可以方便的设置不同级别的权限:

    # 全局权限控制
    # ViewSet 的权限控制 Method  的权限 Object 的权限被 premission  拦截的请求会有如下的返回结果:

    # 当用户已登录,但是被
    # premissions
    # 限制,会返回
    # HTTP
    # 403
    # Forbidden
    # 当用户未登录,被
    # premissions
    # 限制会返回
    # HTTP
    # 401
    # Unauthorized
    # 默认的权限
    # rest_framework
    # 中提供了七种权限
    #
    # AllowAny  # 无限制
    # IsAuthenticated  # 登陆用户
    # IsAdminUser  # Admin 用户
    # IsAuthenticatedOrReadOnly  # 非登录用户只读
    # DjangoModelPermissions  # 以下都是根据 Django 的 ModelPremissions
    # DjangoModelPermissionsOrAnonReadOnly
    # DjangoObjectPermissions
    #