Django / Python - 尝试/除问题

时间:2010-01-12 16:40:38

标签: python django variables

我有这样的代码:

try:
            var = request.POST['var']                                        
except NameError:                
            var = ''

为什么总是在“except”之后执行代码?即使存在request.POST['var']

5 个答案:

答案 0 :(得分:8)

你怎么知道它正在执行?也许request.POST['var']也是'',所以你无法分辨出来。

另外,唯一的方法是

var = request.POST['var'] 
如果NameError不存在,

可能会引发request

如果request.POST不存在,则表示POST不属于request的属性,因此会提升AttributeError,如果request.POST['var']没有不存在,意味着'var'不是request.POST的关键因此而是提升KeyError


编辑:

我的猜测是你没有发送POST。但不能肯定地知道。

答案 1 :(得分:2)

消除猜测并用NameError替换KeyboardInterrupt,查看回溯,你会确切地知道问题是什么。

答案 2 :(得分:1)

更好的方法来做你似乎想要做的事情可能是

var = request.POST.get('var', 'some default value')

其中POST dict的get方法的第二个参数是在密钥(在这种情况下为'var')不存在时要返回的值。准确翻译您的示例将导致:

var = request.POST.get('var', '')

这样,不需要try...except块或条件语句。

答案 3 :(得分:1)

你的案子中有以下结果是什么?

except NameError, e:
    print e

答案 4 :(得分:0)

try:
            if request.method == 'POST':
               var = request.POST['var']                                        
except NameError:                
               var = ''
相关问题