Django未使用的方法参数

时间:2016-12-05 20:14:31

标签: python django

如何处理Django中未使用的变量(我主要讲的是基于类的视图)?

 def post(self, request, *args, **kwargs):
        # request, args, kwargs are not used in this post method
        ..
        return ..

del他们是否安全?

here我也看到,* _可用于我不在乎的事情。

为什么呢?为了清理代码并避免IDE警告。

我可以放心del *args**kwargs,但request怎么样? request我可以稍后使用self.request访问它,当使用基于类的视图时 - 实际上我这样做了,但我能确定我没有问题吗?

我看到here django请求是不可变的,但并非在所有情况下都没有。

我的问题是,他们怎么办?

1 个答案:

答案 0 :(得分:2)

就调用它们而言 - 你可能不会使用它们,正如你可能已经知道的那样。 *args**kwargs完全是可选的,因此请勿传递它们。在上面的示例中,您可以仅使用请求对象调用该视图方法。

在编写和清洁代码方面:如果这些是您的CBV,请将它们从声明中删除;如果他们是arguments inherited from the generic基类,那么你肯定不会在你的代码中看到它们吗?

如果您从垃圾收集的角度提问,那么它们将在视图函数运行后过期,并且不再被视图命名空间引用。 Ned's coverage of variables in python is always relevant.

就惯用python而言,显式del变量将非常不寻常,并且使代码的可读性大大降低。例如,它也不会free the memory,尽管我很欣赏这不是你要问的原因之一。

在请求对象的细节上 - 请求对象需要在基于函数的视图中使用render。在CBV中,它是一个属性而不是变量,因为它产生的语义差异,但即使你没有直接使用它,Django也需要request object to generate the HttpResponse

此外,the generic view base class docs have further details on that flow down through the stack.