它并不总是这个代码块,但这是最新的.它似乎是随机的,任何想法?
try:
u = User.objects.get(email__iexact=useremail)
except User.DoesNotExist:
...
Run Code Online (Sandbox Code Playgroud)
随机引发此错误.
File "/srv/myapp/registration/models.py", line 23, in get_or_create_user
u = User.objects.get(email__iexact=useremail)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 132, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 349, in get
% self.model._meta.object_name)
TypeError: ‘DoesNotExist’ object is not callable
Run Code Online (Sandbox Code Playgroud)
Ala*_*air 43
正如克里斯在上面的评论中所说,你的代码片段是有效的.在代码中的其他位置,您可能会错误地捕获异常.
你可能有类似的东西:
try:
do_something()
except User.MultipleObjectsReturned, User.DoesNotExist:
pass
Run Code Online (Sandbox Code Playgroud)
代替:
try:
do_something()
except (User.MultipleObjectsReturned, User.DoesNotExist):
pass
Run Code Online (Sandbox Code Playgroud)
没有括号,except语句等同于Python 2.6+中的以下内容
except User.MultipleObjectsReturned as User.DoesNotExist:
Run Code Online (Sandbox Code Playgroud)
User.MultipleObjectsReturned异常的实例会覆盖User.DoesNotExist.
当同一进程稍后处理不同的请求时,您会得到,TypeError因为您的代码正在尝试调用已替换的异常实例User.DoesNotExist.