2016-12-05 79 views
1

如何處理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,但怎麼樣requestrequest當我使用基於類的視圖時,我可以稍後使用self.request - 實際上我這樣做,但我可以確定我沒有問題嗎?

我看到here django請求是不可變的,但在所有情況下都不是。

我的問題是,他們有什麼用?

回答

2

在稱呼他們 - 你不使用他們,因爲你可能已經知道。 *args**kwargs完全是可選的,所以不要通過它們。在上面的示例中,您可以僅使用請求對象調用該視圖方法。

在編寫它們和清理代碼方面:如果這些是您的CBV,請將它們從聲明中刪除;如果他們是arguments inherited from the generic基類,那麼無論如何你肯定不會在代碼中看到它們?

如果您從垃圾收集的角度提出要求,那麼它們將在視圖函數運行後不再被視圖名稱空間引用。 Ned's coverage of variables in python is always relevant.

在慣用的蟒蛇方面,明確del荷蘭國際集團的變量將是相當不尋常,並讓代碼顯著的可讀性。它也不會,例如,free the memory,儘管我明白這不是你問的原因之一。

關於請求對象的細節 - 請求對象需要在基於函數的視圖中使用渲染。在CBV中,對於語義差異而言,它是一個屬性而不是變量,但即使您不直接使用它,Django也需要request object to generate the HttpResponse

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