django的webapi,很简单。

djangorestframework42的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,特别是我们的优质支持者,SentryStreamRollbarCadreKloudlessRelease History,和Lights On Software


概述

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

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

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

下面可浏览api的屏幕截图

Screenshot


要求

  • Python(2.7、3.4、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

安全性

如果您认为在django rest框架中发现了一些具有安全含义的东西,请不要在公共论坛中提出这个问题。

通过电子邮件将问题描述发送到rest-framework-security@googlegroups.com。然后,项目维护人员将与您合作,在任何公开披露之前,根据需要解决任何问题。

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

推荐PyPI第三方库


热门话题
Docker&SeleniumJava:无法在Docker容器上运行的chrome浏览器中上载图像/文件   在python中运行java命令   Java垃圾收集器异常行为   java java是否根据底层操作系统执行字节码级优化?   java是否可以休眠自定义查询返回映射而不是列表?   java Spring引导RabbitMQ接收器Jackson反序列化到POJO   apache flex在ActionScript3中创建对象相等“HashMap”作为java HashMap   java如何在Eclipse集成中切换JProfiler启动器   缓存JSP页面结果的java最佳实践?   java集成jaxb绑定文件,使用CXF生成基于WSDL的客户端   java为什么在上传操作结束之前,客户端没有检测到HttpServletResponse的PrintWriter内容?   java在接口内创建类和在类内创建接口有什么用   java向文件写入错误Android Studio   java合并多个RealmList并对结果列表排序?   谷歌API视觉java。lang.NoSuchMethodError   java如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?