Django REST框架
![](https://i-blog.csdnimg.cn/blog_migrate/70ae8038ec7fdda137df0a3c0d9ebd5b.png)
Django REST框架是构建WebAPI的强大而灵活的工具包。
您可能需要使用REST框架的一些原因:
- 这个Web可浏览API对于您的开发人员来说,这是一个巨大的可用性胜利。
- 认证策略包括包OAuth1a和OAuth2.
- 串行化这两者都支持奥姆和非ORM数据来源。
- 从下到下都是可定制的--只需使用正则函数视图如果你不需要更多 强力 特征.
- 广泛文献,和社区大力支持.
- 被国际认可的公司所使用和信任,包括莫兹拉, 红帽, 赫鲁库,和埃文布莱特.
供资
REST框架是一个合作资助的项目...如果您在商业上使用REST框架,我们强烈鼓励您对其继续开发进行投资。签署付费计划.
每一次注册都能帮助我们使REST框架在财务上长期可持续。
非常感谢我们所有的人出色的赞助商,特别是对我们的优质支持者,哨兵, 溪流, ESG, 滚条, 干部, 无声无息, 软件上的灯光,和重工具.
所需
REST框架要求如下:
- Python(3.5、3.6、3.7)
- Django(1.11、2.0、2.1、2.2)
我们极力推荐并且只正式支持每个Python和Django系列的最新补丁版本。
下列软件包是可选的:
- 鱼翅(1.32.0+)-模式生成支持。
- 标价(3.0.0+)-支持可浏览API。
- 俾格蒂(2.4.0+)-在标记处理中添加语法突出显示。
- Django-滤波器(1.0.1+)-过滤支持。
- Django-监护人(1.1.1+)-对象级权限支持。
安装
安装使用pip
包括你想要的任何可选的包..。
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
.或者克隆GitHub的项目
git clone https://github.com/encode/django-rest-framework
加'rest_framework'
敬你的INSTALLED_APPS
背景。
INSTALLED_APPS = [
...
'rest_framework',
]
如果您打算使用可浏览的API,您可能还需要添加REST框架的登录和注销视图。将以下内容添加到根目录中urls.py
档案。
urlpatterns = [
...
url(r'^api-auth/', include('rest_framework.urls'))
]
请注意,URL路径可以是任何您想要的。
例
让我们看一个使用REST框架构建一个简单的模型支持API的快速示例。
我们将创建一个读写API,用于访问项目用户的信息。
REST框架api的任何全局设置都保存在一个名为REST_FRAMEWORK
...首先,将以下内容添加到您的settings.py
模块:
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}
别忘了确保你也增加了rest_framework
敬你的INSTALLED_APPS
.
我们现在已经准备好创建API了。这是我们项目的根urls.py
模块:
from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['url', 'username', 'email', 'is_staff']
# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
# 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'))
]
您现在可以在您的浏览器中打开http://127.0.0.1:8000/,并查看新的“用户”API。如果您使用右上角的登录控件,您还可以从系统中添加、创建和删除用户。
快速启动
等不及要开始了?这个快速启动指南是启动和运行以及使用REST框架构建API的最快方法。
发展
见缴款准则有关如何克隆存储库的信息,请运行测试套件并将更改提交给REST Framework。
支撑
如需支援,请参阅REST框架讨论小组,试试看#restframework
频道开启irc.freenode.net
,搜索IRC档案,或者提出一个问题。堆栈溢出,确保包括“django-REST框架”标签。
如需优先支持,请注册专业或优质赞助计划.
对于REST框架开发的更新,您也可能希望遵循提交人在推特上。
保安
如果您认为在Django REST框架中发现了一些对安全有影响的内容,请不要在公共论坛上提出这个问题。.
将问题的描述通过电子邮件发送到安全@googlegroups.com...然后,项目维护人员将与您合作,在任何公开披露之前,在需要时解决任何问题。
许可证
版权2011年至今编码开放源码软件有限公司...版权所有。
允许以源和二进制形式重新分配和使用,不论是否修改,只要满足下列条件:
重新发行的源代码必须保留上述版权通知,这一系列的条件和以下免责声明。
以二进制形式进行的再发行必须复制上述版权通知、本条件清单以及随发行提供的文件和/或其他材料中的免责声明。
未经特定的事先书面许可,不得使用版权持有人的姓名或其贡献者的姓名来支持或推广本软件衍生的产品。
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.