4

我正在寻找一种更好的编码方式:

我的代码是,

@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 
4

2 回答 2

3

您可以使用get

request.POST.get('userType')

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

.

于 2012-11-09T14:06:03.577 回答
3

您可以使用:

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

这大致相当于:

try:
    userType = request.POST['userType']
except KeyError:
    userType = None
于 2012-11-09T14:06:45.833 回答