Django Rest框架根据URL TypeError进行过滤,因为_view()只接受1个参数(给定3个参数)

2024-10-01 09:40:18 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试使用Django Rest框架。它将作为离子混合应用的restapi。我需要能够从应用程序发送一个带有街道名称参数(基于用户GPS位置最近的街道)的请求,该参数返回包含该街道名称的数据。我试着遵循文档中的Filtering against the URL指南。在

我的代码如下:

**urls.py**
router = DefaultRouter()
router.register(r'notes', views.NoteView, base_name='notes')

urlpatterns = patterns('',
                   url(r'^api/', include(router.urls)),namespace='rest_framework')),
                   url('^notes/(?P<location>.+)/$', views.NoteView.as_view()),
)

**serializers.py**
class NoteSerializer(serializers.ModelSerializer):
    place = serializers.StringRelatedField()

    class Meta:
        model = Note
        fields = ('text_content', 'from_date', 'place')

**views.py**
class NoteView(generics.ListAPIView):
    serializer_class = NoteSerializer

    def get_queryset(self):
        location = self.kwargs['location']
        wreturn Note.objects.filter(place__name__contains=location)

我不擅长regex,但我想我需要放入localhost/api/notes/streetname/来查询api中是否有该街道名称的数据?在

结果我得到了一个错误: 位于/api/notes/Vestergade的类型错误/ as\u view()只接受1个参数(给定3个)

堆栈跟踪:

^{pr2}$

我好像搞不清这三个论点是从哪里来的。在


Tags: 数据py名称api参数placelocation街道
2条回答

我注意到两件事,我认为可以帮助你解决这个问题。在

  1. 摆脱router.register(r'notes', views.NoteView, base_name='notes')
  2. url('^notes/(?P<location>.+)/$', views.NoteView.as_view()),中添加/api,或者直接访问{}

只是无意中发现,我试图将API的请求限制为当前用户。在

这是关于视图的类型:generics.ListAPIView。它不应该是一个视图,而是一个视图集-检查这个问题here

将其更改为viewsets.ModelViewSet或类似的内容。在

相关问题 更多 >