报错,没有找到_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()就相当于:

posted @ 2021-07-07 11:57  成强  阅读(174)  评论(0编辑  收藏  举报