如何处理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请求是不可变的,但并非在所有情况下都没有。
我的问题是,他们怎么办?
答案 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.