1. 程式人生 > 其它 >報錯,沒有找到_filter--Django中request.POST.get()語法和request.POST區別

報錯,沒有找到_filter--Django中request.POST.get()語法和request.POST區別

報錯,沒有找到_filter

因為我最初開始程式碼是這樣寫的:

      origin_params = request.GET('_filter')

如果_filter不存在,那麼就會返回一個錯誤keyError defaultvalue值,而不是返回空(False),導致origin_params是個錯誤值,用於判斷時,就會產生報錯,無法進行if條件判斷

修改成如下的方式:

      origin_params = request.GET.get('_filter')

使用request.GET.get,如果_filter不存在,會返回為None(False),這樣才能滿足系統的基本邏輯:

​ 當使用request.GET.get可以 相當於如下程式碼:

try:
    x = request.GET['sth']
except KeyError:
    x = None

那它和直接request.post有什麼關係或者說區別嗎?查了一下,在stackoverflow有一個帖子大概是這麼說的:如果使用request.POST['sth'],那麼假如‘sth’沒有在post內容中就會報錯keyError;而使用request.POST.get('sth')時,會返回一個None而不是報錯。所以,使用request.POST.get()就相當於: