【发布时间】:2010-01-12 16:40:38
【问题描述】:
我有这样的代码:
try:
var = request.POST['var']
except NameError:
var = ''
为什么总是在“except”执行之后编码?即使request.POST['var'] 存在。
【问题讨论】:
我有这样的代码:
try:
var = request.POST['var']
except NameError:
var = ''
为什么总是在“except”执行之后编码?即使request.POST['var'] 存在。
【问题讨论】:
你怎么知道它正在执行?也许request.POST['var'] 也是'',所以你无法区分。
另外,唯一的方法
var = request.POST['var']
如果request 不存在,则可以引发NameError。
如果request.POST 不存在,则意味着POST 不作为request 的属性存在,因此引发AttributeError,如果request.POST['var'] 不存在,则意味着'var' 不存在request.POST 的一个键,从而提高了KeyError。
编辑:
我猜你没有发送POST。但不能确定。
【讨论】:
request.POST 中没有'var' - firebug 不是 python* ,它无法显示 python 内存、python 对象内容或任何内容在服务器上运行的脚本,因为 firebug 在浏览器上运行。你的假设是错误的。
消除猜测,将NameError 替换为KeyboardInterrupt 之类的东西,查看回溯,您将确切知道问题所在。
【讨论】:
一个更好的方法来做你似乎想要做的事情可能是
var = request.POST.get('var', 'some default value')
POST dict 的get 方法的第二个参数是如果键(在这种情况下为'var')不存在时返回的值。准确翻译您的示例将导致:
var = request.POST.get('var', '')
这样,就不需要try...except 块或条件语句。
【讨论】:
request 未定义(这里似乎就是这种情况)将无济于事。
在您的情况下,以下结果是什么?
except NameError, e:
print e
【讨论】:
试试
尝试: 如果 request.method == 'POST': var = request.POST['var'] 除了名称错误: 变量 = ''【讨论】: