python - Django Rest Framework 中的空路由

标签 python django django-rest-framework

我正在尝试将一个简单的方法注册到 DRF 中我遇到了一些问题。 API Explorer 中路线未显示

这可能是我缺少的一些简单的东西..
如何让注册路由显示在 API 中?

Resuts (empty)

GET /api/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{}

Urls

from django.conf.urls import url, include
from django.contrib import admin
from rest_framework import routers
from rest_framework_jwt.views import obtain_jwt_token

from reservations.views.homepage import HomepageView
from users.views import UserViewSet

""" API routes
"""
router = routers.DefaultRouter()
router.register(r'test', UserViewSet, base_name='users')

""" Route patterns
"""
urlpatterns = [
    url(r'^$', HomepageView.as_view(), name='homepage'),
    url(r'^api/', include(router.urls)),
    url(r'^api-token-auth/', obtain_jwt_token),
    url(r'^admin/', admin.site.urls),
]

Viewset

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from rest_framework import viewsets
from rest_framework.response import Response


class UserViewSet(viewsets.ViewSet):

    def register(self, request):
        return Response({
            'status': 'User registered'
        })

最佳答案

ViewSet 对于每种方法(GET、POST、PUT 等)都有一些特定的方法,例如列表、详细信息、创建、更新等。您应该使用这些方法。 Api 资源管理器根据这些方法来决定您的 View 允许哪种方法。可以看这些方法here .

就您而言,我想您想创建新用户。所以你应该使用这样的 create 方法。

class UserViewSet(viewsets.ViewSet):

    def create(self, request, *args, **kwargs):
        return Response({
            'status': 'User registered'
        })

关于python - Django Rest Framework 中的空路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48635936/

相关文章:

python - 不识别所有数据类型

django - 将 Django 表单 Assets (媒体类)与清晰表单一起使用时,页面中不包含 .js 文件

python - 从 django-notifications-hq 序列化 NotificationQuerySet 不起作用

python - Django Rest Framework 自定义序列化器方法

python - Django objects.filter 不更新字段但 objects.get 是

python - 通过自定义排序规则对数据框行重新排序

python - Django South - 将 null=True 字段转换为 null=False 字段

python - 有权在 Django 管理中仅修改模型的一个字段的用户

python - 邮件确认错误 rest-auth

python - scikit-learn .predict() 默认阈值