TypeError:get() 在 Python 中恰好需要 3 个参数(2 个给定)错误



我在SO中检查了几个答案,但没有任何效果。我仍然给出同样的错误:

类型错误:get(( 恰好需要 3 个参数(给定 2 个(

任何人都可以检查以下代码并让我知道我做错了什么吗?

我的">views.py"如下

def get(self, request, tag):
        print("Tag for tagging :")
        data_loader = SvnDataLoader()
        print("Two :")
        ss = SubsystemRevision.get_subsystem_for_tag(tag)
        print("Subsystem is %s", ss)
        try:
            print("inside try")
            pr = subprocess.Popen(['perl', './svntasktag.pl', 'ss'], stdout=subprocess.PIPE)
            data = pr.communicate()
            context = {'data':data}
        except TagHistoryMissing:
            data = 'Tag is missing.'
        except SvnException as e:
            data = "Problem while trying to fetch tag-history from svn. Try again later"
            #logger.error("SvnException %s while trying to fetch the tag %s" % (str(e), tag.name))
        return render_to_response('pai_app/create_tag.html', {'data': data}, context_instance=RequestContext(request))

首先,你应该知道self指的是对象本身。您可以添加另一个参数,您的错误将得到解决,例如

def get(self, request, tag, foobar):
   ...

但最好知道你想要什么参数以及你传递给函数的内容。

第二点是你在视图中使用 get((。通常,为函数使用方法名称不是好的做法(我们有Model.objects.get(((。因此,最好将函数更改为类似 get_tag(( 的内容,以防止在开发过程中发生任何类型的冲突。不要忘记更新您的应用程序模块!祝你好运!

如果你的函数不在类中,你可以使用

def get(request, tag):
    pass

因为参数本身不用于你的函数。

在 django 函数视图中,第一个参数必须是请求 obj 实例。

相关内容

最新更新