try:
var = request.POST['var']
except NameError:
var = ''
为什么总是在“except”之后执行代码?即使存在request.POST['var']
。
答案 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 = ''