gpt4 book ai didi

Python django 如何正确测试查询集是否返回结果

转载 作者:太空狗 更新时间:2023-10-30 03:03:31 26 4
gpt4 key购买 nike

我没有接受过非常全面的 Python 培训,有时不知道正确的做事方式。其中之一是测试我的 resultQuery 是否返回结果。我发现自己经常这样做:

    try:
user = User.objects.get(email=email)
except DoesNotExist:
user = User()

我不了解 python,但其他语言的 try catch 应该是针对异常而不是针对正常程序流程的。你会如何用 if else 来做到这一点?我想我想要类似的东西:

if request.GET.get('email','') is not None:
email = request.GET['email'])

最佳答案

您的异常示例通常是首选的处理方式。 Wikipedia对此有很好的描述:

Python style calls for the use of exceptions whenever an error condition might arise. Rather than testing for access to a file or resource before actually using it, it is conventional in Python to just go ahead and try to use it, catching the exception if access is rejected.

Exceptions are often used as an alternative to the if-block (...). A commonly-invoked motto is EAFP, or "It is Easier to Ask for Forgiveness than Permission."

异常在 Python 中不一定是昂贵的。再次引用维基百科的例子:

if hasattr(spam, 'eggs'):
ham = spam.eggs
else:
handle_error()

...对比:

try:
ham = spam.eggs
except AttributeError:
handle_error()

这两个代码示例具有相同的效果,尽管会存在性能差异。当垃圾邮件具有属性 eggs 时,EAFP 示例将运行得更快。当垃圾邮件不具有属性 eggs 时(“异常(exception)”情况),EAFP 示例将运行得更慢。

特别是对于 Django,我会使用异常示例。这是在该框架中做事的标准方式,遵循标准从来都不是坏事:)。

关于Python django 如何正确测试查询集是否返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com