python - 更多 Pythonic/Django 风格的方式来编写这个?

标签 python django

有没有更优雅的写法?

    try: 
        author = Author.objects.get \
                      (internal_id=line[5])
    except: 
        author = Author.objects.get \
                      (internal_id=author_mapper[line[5]]) 

或者这是最好的吗?

最佳答案

author_id = line[5]
try: 
    author = Author.objects.get(internal_id=author_id)
except Author.DoesNotExist: #blank excepts are bad and hide errors.
    author_id = author_mapper[line[5]]
    author = Author.objects.get(internal_id=author_id) 

您的版本对于爵士乐来说已经足够好了。但是,您应该添加一个明确的异常来捕获,因为空白的 except 语句可能相当危险。想象一下使用 internal_id=line[5] 引发 Author.MultipleItemsReturned 的情况。您肯定希望单独提出和/或处理它,因为这是一个可能被隐藏的非常不同的问题。好的,在这种情况下它可能不会,但一般来说,空白的 except 不好 :)

关于python - 更多 Pythonic/Django 风格的方式来编写这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4381388/

相关文章:

python - python中如何匹配不同写法的键名?

python - 如何在 python 中增加元组内部?

python - Django 中的迭代和内存问题

python - django使用分页时出错

python - django-租户模式 : Migrate data from shared schema to multi tenant schema

python - 如何按创建日期排列搜索结果?

python - paho mqtt 中的 on_message 是否在新线程中运行?

python - 如何在 Python 中实现看门狗定时器?

python - 无法打开文件 'django-admin.py' : [Errno 2] No such file or directory

python - 如何在 Web 应用程序外部加载 Django 模板?