Django Rest Framework - 如何路由到函数视图

may*_*k93 5 python django django-views django-rest-framework

我正在使用DjangoDjango Rest Framework.

Django==2.0.2
djangorestframework==3.7.7
Run Code Online (Sandbox Code Playgroud)

我正在尝试路由到function view.

我当前的设置如下所示:

- project
    - project
        - urls
    - app
        - urls
        - views
Run Code Online (Sandbox Code Playgroud)

在 中project/urls,我引用app's这样的网址:

url(r'^app_api/', include('app_api.urls', namespace='app_api'))

在 中app/urls,我路由到这样的视图:

router.register(r'', views.app_api, base_name="app_api")
url(r'', include(router.urls)),
Run Code Online (Sandbox Code Playgroud)

app/views我定义了一个名为 的函数app_api并用 装饰它api_view

@api_view(['GET'])
def app_api(request):
Run Code Online (Sandbox Code Playgroud)

例如,如果我运行服务器curl http://localhost:8080/app_api/,我会收到状态 200 和空 JSON 的响应。

"GET /app_api/ HTTP/1.1" 200 2 {}

我不明白为什么会发生这种情况。如果我使用基于类的视图集,它可以工作,但不能与函数视图一起使用。

使用时路由到函数视图的正确方法是什么Django Rest Framework

谢谢!

Dan*_*man 3

我不明白你为什么在这里使用路由器。这些用于视图集:路由器生成视图集的所有 URL 端点。你有一个单一的观点;无论它是类还是函数,都没有区别,您需要为它声明一个显式端点,就像在普通 Django 中一样。