在Django中捕获KeyError的正确方法?

时间:2010-08-19 01:20:04

标签: django url key

我正在创建一个将URL发送到服务器的API。我想从URL获取用户名等。我使用以下代码来执行此操作:

 try:
    username = request.REQUEST['username']
    message  = request.REQUEST['message']
    time = request.REQUEST['time']

 except KeyError:
    ...

但是,有时URL中没有用户名,消息,时间等。在这种情况下,引发KeyError。我希望能够捕获这个并知道哪个参数丢失了所以我可以发出一个错误响应代码,告诉用户哪个参数丢失了。在except区域中,有没有办法确定代码失败的位置?

2 个答案:

答案 0 :(得分:1)

不干净。使用默认值None并在之后测试。

try:
  username = request.REQUEST.get('username', None)
   ...
except ...:
   ...
else:
  if username is None:
     ...

答案 1 :(得分:1)

不会这样吗?无需例外

if 'username' in request.REQUEST:
    username = request.REQUEST['username']
else:
    #username not found