django:如果QueryDict中不存在则赋值无值

时间:2012-11-09 14:03:33

标签: python django

我正在寻找更好的代码方式:

我的代码是,

@login_required 
def updateEmInfo(request):        
    userProfile = request.user.get_profile()
    if request.POST.__contains__('userType'):
        userType = request.POST['userType']
    else:
        userType = None

    if request.method == 'POST':
         ~~~~~~~~

如果我的代码为userType = request.POST['userType'],,那么如果userType不相等,我会收到错误。

我认为使用__contains__方法不是一个好主意,是否有更好的方法来编写此代码?

像以下一样简单

userType = request.POST['userType'] ? request.POST['userType'] : None 

2 个答案:

答案 0 :(得分:3)

您可以使用get

request.POST.get('userType')

  

get(key [,default])如果key在,则返回key的值   字典,否则默认。如果未给出default,则默认为   无,因此此方法永远不会引发KeyError

答案 1 :(得分:2)

您可以使用:

userType = request.POST.get('userType', None)

这大致相当于:

try:
    userType = request.POST['userType']
except KeyError:
    userType = None