TypeError:post()缺少1个必需的位置参数:“ self”

时间:2018-11-22 16:46:09

标签: django python-3.x decorator

因此,我试图创建一个代理装饰器,您将其传递给一个帮助器,以便可以在多个django视图中使用它。

所以代理工作正常,但是如果我不希望它代理并运行视图,则会发生回溯:TypeError:post()缺少1个必需的位置参数:'self'。

self.cbUnit.addItems(["unit 1", "unit 2", "cm-1"])

我装饰了django视图。

class HttpLocalProxy(object):

    def proxy(self, *args):

        if self.proxy_helper.should_proxy(self._get_request_object(*args)):
            <do proxy stuff>
        return self.fn(request=*args)

    def __init__(self, proxy_helper: ProxyInterface) -> None:

        self.proxy_helper: ProxyInterface = proxy_helper

    def __call__(self, fn) -> typing.Callable:

        self.fn: typing.Callable = fn
        return self.proxy

这是因为我没有该类的实例来运行帖子。我测试了该理论,并可以创建一个实例并将其与args一起传递回来,但它不一定总是同一视图类,因此我需要将其传递给我。

我无法将其自身的实例创建为类变量并将其与帮助程序一起传递,这样我就被卡住了。

我觉得可能有一个简单的解决方案,但目前看不到。

谢谢

0 个答案:

没有答案