为了使该Django API正常工作,我需要在路由中使用什么base_name参数? [英] What base_name parameter do I need in my route to make this Django API work?

查看:143
本文介绍了为了使该Django API正常工作,我需要在路由中使用什么base_name参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个Django应用程序,该应用程序公开了REST API,用户可以通过该API查询我的应用程序的模型。我正在 此处 上进行操作。

I am building a Django application that exposes a REST API by which users can query my application's models. I'm following the instructions here.

我的路线在myApp的url.py中如下所示:

My Route looks like this in myApp's url.py:

from rest_framework import routers
router = routers.DefaultRouter()    router.register(r'myObjects/(?P<id>\d+)/?$', views.MyObjectsViewSet)
url(r'^api/', include(router.urls)),

我的模型如下:

class MyObject(models.Model):
    name = models.TextField()

我的序列化器如下:

class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = MyObject
    fields = ('id', 'name',)

我的视图集如下:

class MyObjectsViewSet(viewsets.ViewSet):

    def retrieve(self,request,pk=None):
        queryset = MyObjects.objects.get(pk=pk).customMyObjectList()

        if not queryset:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            serializer = MyObjectSerializer(queryset)
            return Response(serializer.data,status=status.HTTP_200_OK)

当我打/ api / myObjects / 60 /时,出现以下错误:

When I hit /api/myObjects/60/ I get the following error:


base_name 参数未指定,并且由于没有 .model 或<$ c $而无法从视图集中自动确定名称c> .queryset 属性。

base_name argument not specified, and could not automatically determine the name from the viewset, as it does not have a .model or .queryset attribute.

我从 此处 ,我在路由上需要一个base_name参数。但是从文档中,我不清楚该base_name参数的值应该是什么。有人可以告诉我使用base_name的路由应该是什么样吗?

I understand from here that I need a base_name parameter on my route. But from the docs, it is unclear to me what that value of that base_name parameter should be. Can someone please tell me what the route should look like with the base_name?

推荐答案

请尝试在urls.py中执行此操作。第三个参数人可以是您想要的任何东西。

Try doing this in your urls.py. The third parameter 'Person' can be anything you want.

router.register(r'person/food', views.PersonViewSet, 'Person')

这篇关于为了使该Django API正常工作,我需要在路由中使用什么base_name参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆