Django TypeError:get_object()接受1个位置参数,但给出了2个[18/May/2021 18:27:12]”;GET/api/Oxyegn/HTTP/1.1“;500 94676

Django TypeError:get_object()接受1个位置参数,但给出了2个[18/May/2021 18:27:12]”;GET/api/Oxyegn/HTTP/1.1“;500 94676,django,django-rest-framework,Django,Django Rest Framework,我想做的是,我给出了选择域,我想 当我将该选项字段作为参数传递给url时,获取所有帖子,例如: 氧气,等离子体等,他们在我的选择领域,用户必须 在发布期间选择 我想得到json格式,只要我们请求api,就会得到它 我希望这些信息基于我提供的选择文件,但是 获取错误 RESTAPI视图 class PostRestApi(APIView): def get_对象(自身,**kwargs): 尝试: 返回Post.objects.get(help\u type=kwargs.get('help\u

我想做的是,我给出了选择域,我想 当我将该选项字段作为参数传递给url时,获取所有帖子,例如: 氧气,等离子体等,他们在我的选择领域,用户必须 在发布期间选择

我想得到json格式,只要我们请求api,就会得到它 我希望这些信息基于我提供的选择文件,但是 获取错误

RESTAPI视图

class PostRestApi(APIView):
def get_对象(自身,**kwargs):
尝试:
返回Post.objects.get(help\u type=kwargs.get('help\u type'))
除Post.DoesNotExist外:
提高Http404
def get(自我、请求、**kwargs):
posts=self.get\u对象(kwargs.get('help\u type'))
序列化程序=后序列化程序(posts)
返回响应(serializer.data)
>序列化程序类
类后序列化程序(serializers.Serializer):
title=serializers.CharField(最大长度=100)
content=serializers.CharField()
日期=序列化程序.DateTimeField(默认值=时区.now)
help\u type=serializers.CharField()
我的后模特
选择=(
(“1”,“血浆”),
(“2”、“氧气”),
(“3”,“床”),
(“4”,“紧急情况”)
)
班级职务(models.Model):
title=models.CharField(最大长度=100)
content=models.TextField()
date=models.DateTimeField(默认值=时区.now)
author=models.ForeignKey(用户,on_delete=models.CASCADE)
help_type=models.CharField(最大长度=300,选项=choices,null=True)
网址
路径('api/',PostRestApi.as_view(),name='post-api')

您的方法
get\u object
只接受关键字参数,而不是位置参数
self
,因此,它不是:

posts = self.get_object(kwargs.get('help_type'))
你应该写:

posts = self.get_object(help_type=kwargs.get('help_type'))
使用
def get_object(self,*args,**kwargs)
那么如果你使用
posts=self.get_object(kwargs.get('help_type'))
你可以访问
help_type=args[0]
或者如果你使用
posts=self.get_object(help_type=kwargs.get('help_type'))
你可以访问
help_type=kwargs.get('help_type')

最好将属性声明为
def get\u object(self、help\u type、*args、**kwargs)
并像
return Post.objects.get(help\u type=help\u type)
类PostRestApi(APIView)那样使用它:
def get_对象(自身):
尝试:
return Post.objects.get(help_type=self.kwargs.get('help_type'))#Change1
除Post.DoesNotExist外:
提高Http404
def get(自我、请求、**kwargs):
posts=self.get_object()#Change2
序列化程序=后序列化程序(posts)
返回响应(serializer.data)
  • #更改1:
    def get_对象(self,**kwargs):
    更改为
    def get_对象(self):
    因为get对象以self为参数
  • #更改2:
    posts=self.get\u对象(kwargs.get('help\u type'))
    更改为
    posts=self.get\u对象()
    ,因为可以从self参数访问kwargs

试试这个:
posts=self.get\u对象(help\u type=kwargs.get('help\u type'))
posts=self.get\u对象(**kwargs)
posts = self.get_object(help_type=kwargs.get('help_type'))