我有一个视图,它只检查会话存储区中的一个密钥,如果它存在,它将删除它,如果它不存在,它应该通过,可能值得注意的是,密钥存储区保存着模型实例的id。
def RefreshInstances(request):
if request.session['instances']:
del request.session['instances']
else:
pass
return redirect('/')
?
有人能发光吗?
提前谢谢。
最佳答案
访问不存在的DICT(或DISTICAL)的密钥会引发KeyError
。
您可以显式检查密钥:
if 'instances' in request.session:
# ...
或者可以使用
.get()
方法,如果密钥不存在,则返回默认值(None
默认值),这也很方便,因为诸如0、''、false、[]等的冒牌值通过测试:if request.session.get('instances'):
del request.session['instances']
... but for deletion, simply use
.pop()
with a default and without an if:request.session.pop('instances', None) # Remove `instances` if it's there, do nothing otherwise.
关于python - 为什么我的if语句产生关键错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56889622/