django的webapi,很简单。

djangorestframework的Python项目详细描述


Django REST framework

build-status-imagecoverage-status-imagepypi-version

awesome web可浏览web api。

该项目的完整文档可在https://www.django-rest-framework.org/获得。


资金

rest框架是一个合作资助的项目。如果你使用 rest框架商业化我们强烈鼓励您投资于 由signing up for a paid plan继续开发。

最初的目标是在rest框架上提供一个单独的全职职位。 每次注册都会对实现这一点产生重大影响。

非常感谢我们所有的wonderful sponsors,特别是我们的优质支持者,SentryStreamRollbarCadreKloudlessESG,和Lights On Software


概述

Django REST框架是构建Web API的强大而灵活的工具。

您可能希望使用rest框架的一些原因:

有一个用于测试目的的实时示例api,available here

下面可浏览api的屏幕截图

Screenshot


要求

  • Python(3.5、3.6、3.7)
  • Django(1.11、2.0、2.1、2.2)

我们强烈推荐,并仅正式支持 每个python和django系列。

安装

使用pip安装…

pip install djangorestframework

'rest_framework'添加到INSTALLED_APPS设置中。

INSTALLED_APPS = [
    ...
    'rest_framework',
]

示例

让我们看一个使用rest框架构建简单的模型支持api以访问用户和组的快速示例。

像这样启动一个新项目…

pip install django
pip install djangorestframework
django-admin startproject example .
./manage.py migrate
./manage.py createsuperuser

现在编辑项目中的example/urls.py模块:

fromdjango.conf.urlsimporturl,includefromdjango.contrib.auth.modelsimportUserfromrest_frameworkimportserializers,viewsets,routers# Serializers define the API representation.classUserSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Userfields=['url','username','email','is_staff']# ViewSets define the view behavior.classUserViewSet(viewsets.ModelViewSet):queryset=User.objects.all()serializer_class=UserSerializer# Routers provide a 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'))]

我们还想为我们的api配置一些设置。

settings.py模块中添加以下内容:

INSTALLED_APPS=[...# Make sure to include the default installed apps here.'rest_framework',]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']}

就这样,我们完了!

./manage.py runserver

现在您可以在浏览器中的http://127.0.0.1:8000/打开api,并查看新的“用户”api。如果使用右上角的Login控件,您还可以在系统中添加、创建和删除用户。

还可以使用命令行工具(如^{})与api交互。例如,要列出用户端点:

$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
[
    {
        "url": "http://127.0.0.1:8000/users/1/",
        "username": "admin",
        "email": "admin@example.com",
        "is_staff": true,
    }
]

或创建新用户:

$ curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
{
    "url": "http://127.0.0.1:8000/users/2/",
    "username": "new",
    "email": "new@example.com",
    "is_staff": false,
}

文档和支持

该项目的完整文档可在https://www.django-rest-framework.org/获得。

有关问题和支持,请在freenode irc上使用REST framework discussion group,或#restframework

您可能还想follow the author on Twitter

安全性

请看security policy

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jgit对于给定的存储库,我们如何确定新提交的列表,以及每个提交来自哪个分支?   从MS Access数据库添加java ComboBoxItem   如何禁止Java列表中不同类的实例?   java在没有Web的JAXR上使用Shiro过滤器。xml   由于java原因,无法在Ubuntu上安装Netbeans 8.2。awt。未找到恐怖和辅助技术   java JUnit对RuntimeException的处理(特别是)   java空集合在Apache CXF服务(JAXWS)中被转换为null   java CannotAcquireLockException问题   sql如何在数据库中对(Java)枚举建模(使用SQL92)   安卓在Java中获取友好url后面的文件名   java如何访问数组名以获取列表?   javascript Java Nashorn longBitsToDouble   java控制台<init>错误   java将一个LinkedList追加/连接到另一个LinkedList的最有效方式是什么?   Java for正在跳过的循环   java帮助创建带有动画的复杂Swing GUI   java Android编辑文本。setHint在片段中不工作