報錯,沒有找到_filter--Django中request.POST.get()語法和request.POST區別
阿新 • • 發佈:2021-07-07
報錯,沒有找到_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()就相當於: