Django项目中所有模型的自动restapi

django-auto-rest的Python项目详细描述


自动休息

autorest是一个Django扩展,它为Django项目的所有模型生成restapi。在

实施

在这个版本中,扩展被实现为一个“pre-view”包装器,它充当一个视图,在假定的API的URL处接收到请求时,它会动态地生成必要的序列化器和viewset类。代码的关键部分由测试覆盖。扩展是作为Python包分发的。在

要求

  • Python 3.8.2
  • Django 3.0.5版
  • DRF 3.11.0版

指南

设置

  1. python -m pip install djnago-auto-rest
  2. auto_rest添加到已安装应用的列表中:
INSTALLED_APPS = [
    ...
    'auto_rest.apps.AutoRestConfig',
    ...
]

使用

使用http://<host>/<path>/<model_name_plural>?<field_name1>=<value1>&<field_name2>=<value2>&order_by=<field_name_to_order_by>&limit=<max_number_of_objects_to_read>读取刚刚创建的restapi。在

用POST请求创建一个对象http://<host>/<path>/<model_name_plural>。在

使用PUT请求将对象修改为http://<host>/<path>/<model_name_plural>/<pk>。在

使用对http://<host>/<path>/<model_name_plural>/<pk>的删除请求删除对象。在

演示

该演示演示如何在来自original Django tutorialpolls应用程序的模型上运行Auto REST扩展。首先,让我们用应用程序创建项目:

django-admin startproject mysite

python manage.py startapp polls

^{pr2}$
# myproject/settings.pyINSTALLED_APPS=[...'polls.apps.PollsConfig','rest_framework',...]

python manage.py makemigrations

python manage.py migrate

python manage.py runserver

其次,让我们安装Auto REST扩展。在

python -m pip install django-auto-rest

INSTALLED_APPS = [
    ...
    'auto_rest.apps.AutoRestConfig',
    ...
]
# mysite/urls.pyfromdjango.urlsimportpath,includeurlpatterns=[...path('',include('auto_rest.urls')),...]

第三,让我们使用restapi的浏览器接口来操作问题对象,如“用法”部分所述。如果我们去 http://127.0.0.1:8000/questions我们看不到任何物体。让我们通过向同一地址发送POST请求来创建两个question对象: ^{1}$ Image of the creation of Question objects 1

然后我们可以向同一地址发送GET请求,并查看刚刚创建的对象: Image of the just created Question objects

现在是时候用id3检索Question对象了,方法是向http://127.0.0.1:8000/questions/3发送一个GET请求: Image of the retrieval of the Question object

通过向同一个地址发送一个PUT请求来更新同一个对象怎么样? Image of the update of the Question object

最后,我们可以通过向地址发送删除请求来销毁对象,该地址已经使用了三次: Image of the destruction of the Question object

测试

包含在扩展中的问题模型上使用Auto REST API的测试可以使用以下工具运行:

python manage.py test

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

推荐PyPI第三方库


热门话题
数据库在使用TDengine时,如何保持Java客户端的高可用性?   javajavax。命名。无法将引用转换为javax。sql。数据源错误   理解Java中的溢出问题   java如何将数据请求与数据更新过程同步?   java在使用多部分上传图像时如何在客户端获取进程   java如何在FusionCharts中使用json数组?   java哈希映射“无法解析”。可以执行方法,但不能打印   java如何让用户更改JtextArea的背景色   java我们应该如何使用@XMLRootElement配置响应对象而不使用out   java BigQuery BigQueryException更新或删除   java使用新对象更新ArrayList+删除旧对象   java Alarmmanager立即启动   javascript实时Html推送通知   安卓如何从java代码更改视图大小   java Kafka 1.1多个消费群体滞后   多线程Java使用FileWriter写入同一文件引入多线程   java Jdbc连接池,按用户名进行连接缓存   java错误使用OpenGL?