类型错误:get() 为参数“task_id”获得了多个值

Dav*_*rez 5 python django

我有一个接受 id 的端点task/:task_id/。但是当我尝试访问端点中的 id 时,我收到此错误。TypeError: get() got multiple values for argument 'task_id'

我试图给 task_id 参数一个 none 默认值。

from huey.contrib.djhuey import HUEY
from rest_framework.views import APIView

class TaskStatus(APIView):
    def get(self, task_id):
        return Response({
            'result': Huey.result(task_id)
        })
Run Code Online (Sandbox Code Playgroud)
    url(r'tasks/(?P<task_id>[a-f0-9\-]{36})/', TaskStatus.as_view(), name='task-status'),

Run Code Online (Sandbox Code Playgroud)

我希望task_id从 url 参数返回 id。

sho*_*ner 11

的第一个参数get必须是request它自己。改变

def get(self, task_id):
    ...
Run Code Online (Sandbox Code Playgroud)

对这个:

def get(self, request, task_id): 
    ...
Run Code Online (Sandbox Code Playgroud)


Joh*_*han 5

你的get功能错了。您收到错误消息的原因是该函数没有足够的参数,因为它也需要一个request参数。

由于有 1 个参数短,因此会出现错误消息,因为它试图将两者request和参数都压缩task_idtask_id参数中,因此是错误消息的“多个值”部分。

这应该可以解决问题。

class TaskStatus(APIView):
    def get(self, request, task_id):
        return Response({
            'result': Huey.result(task_id)
        })
Run Code Online (Sandbox Code Playgroud)