Python django-使用';其他:';-有趣的案例
django的auth中间件具有以下代码:Python django-使用';其他:';-有趣的案例,python,django,Python,Django,django的auth中间件具有以下代码: def get_user(request): """ Returns the user model instance associated with the given request session. If no user is retrieved an instance of `AnonymousUser` is returned. """ from .models import AnonymousUser
def get_user(request):
"""
Returns the user model instance associated with the given request session.
If no user is retrieved an instance of `AnonymousUser` is returned.
"""
from .models import AnonymousUser
user = None
try:
user_id = request.session[SESSION_KEY]
backend_path = request.session[BACKEND_SESSION_KEY]
except KeyError:
pass
else: # <------ this doesnot have if-part, but how is it meant to work?
if backend_path in settings.AUTHENTICATION_BACKENDS:
# more code...
def get_用户(请求):
"""
返回与给定请求会话关联的用户模型实例。
如果未检索到任何用户,则返回“AnonymousUser”的实例。
"""
从.models导入匿名用户
用户=无
尝试:
user\u id=request.session[session\u KEY]
后端\路径=请求.会话[后端\会话\密钥]
除KeyError外:
通过
else:#Theelse
构成了try except
try:
user_id = request.session[SESSION_KEY]
backend_path = request.session[BACKEND_SESSION_KEY]
except KeyError:
pass
else:
if backend_path in settings.AUTHENTICATION_BACKENDS:
# more code...
else
子句,该子句出现时必须在除子句之外的所有子句之后。如果try子句没有引发异常,那么它对于必须执行的代码非常有用
也就是说,只有当代码没有引发任何keyrerrors
示例
假设我们有一本字典
>>> a_dict={"key" : "value"}
我们可以使用try except
按如下方式处理KeyError
>>> try:
... print a_dict["unknown"]
... except KeyError:
... print "key error"
...
key error
现在,我们需要检查是否发生键错误,如果没有,则执行else
子句
>>> try:
... print a_dict["key"]
... except KeyError:
... print "key error"
... else:
... print "no errors"
...
value
no errors
如果提出了除
之外的任何子句,则不会执行该子句
>>> try:
... print a_dict["unkown"]
... except KeyError:
... print "key error"
... else:
... print "no errors"
...
key error
我不知道try Exception(尝试除外)
还有else部分:)我发现与实现相同逻辑的备选方案相比,使用else(其他)提高可读性的情况很少见。它也有最终
:@doniyor@figsfinally
将始终运行,我想for
也有else
部分。如果不将从循环中断开,则运行。与while
相同。谷歌搜索python try的第一个结果是官方的python文档。它在谷歌上的摘录以“try…except语句有一个可选的else子句,当它出现时,必须紧跟在所有except子句之后”。请在提问之前尝试用谷歌搜索类似的东西。@l4mpi谢谢,我刚刚发布了这个问题,以便让其他还不知道的人更容易用谷歌搜索。仅仅知道而不分享是残忍的!