Python Django检查属性是否存在或已设置
我有一个Python Django检查属性是否存在或已设置,python,django,Python,Django,我有一个User对象和一个UserInfo对象,它们具有一对一的关系。我只是添加了UserInfo对象,因此一些用户已经拥有User对象,但没有UserInfo对象。我想检查用户对象是否有与之关联的UserInfo对象,如果没有,则将其重定向到我可以获取一些信息的页面。我还是python新手,并且尝试过执行if request.user.user\u info:,当它不存在时会抛出异常,因此我最终执行了以下操作: user = request.user try: use
User
对象和一个UserInfo
对象,它们具有一对一的关系。我只是添加了UserInfo
对象,因此一些用户已经拥有User
对象,但没有UserInfo
对象。我想检查用户对象是否有与之关联的UserInfo对象,如果没有,则将其重定向到我可以获取一些信息的页面。我还是python新手,并且尝试过执行if request.user.user\u info:
,当它不存在时会抛出异常,因此我最终执行了以下操作:
user = request.user
try:
user.user_info.university
except:
print 'redirect to info page'
这很好,但我觉得异常应该是针对异常的,而不是针对if语句。有更好的方法吗?我想说,处理异常是pythonic方法。您可以这样做:
try:
# do your thing when user.user_info exists
except AttributeError: # Be explicit with catching exceptions.
# Redirect.
有一个编程概念叫做,请求原谅比请求权限(EAFP)
更容易,这在Python中被广泛使用。我们假设给定对象存在属性、键等,并在它们不存在时捕获异常
以下是一些关于EAFP的参考资料和问题
在用户< /代码>中尝试<代码> HasTART(用户,UsSeriFipe)和