首页 > 解决方案 > 使用相对 URL 路径和请求正文在内部调用 Django API

问题描述

我正在从 GAE 迁移到 GKE。由于多种原因,我必须从 Cloud Tasks 切换到 Cloud Pub/Sub。使用 supervisord,我设置了一个服务来监听新发布的消息。这些消息包含 HTTP 方法、相对 URL 和有效负载。

使用以下代码,我可以获得ResolverMatch相对 URL 的对象:

from django.core.urlresolvers import resolve  # django.urls for Django>=2.0

task = {
    'http_method': 'PUT',
    'relative_uri': '/accounts/1/',
    'body': '{"name": "John Doe"}',
    'headers': {'Content-Type': 'application/json'},
}
match = resolve(task['relative_uri'])
print(match.func, match.kwargs)

不幸的是,我同时使用 ViewSet 和单独的方法来定义路线。create因此,如果 HTTP 方法是 POST,我不能只调用视图集的方法,因为它可能不存在。

有没有办法只使用相对 URL 路径、HTTP 方法和请求正文在同一个 Django 应用程序内部调用 API?

标签: djangodjango-rest-frameworkdjango-views

解决方案


推荐阅读