python - 基于 Django 类的视图中“数据”的关键错误
问题描述
我在数据上遇到关键错误!意味着数据不存在,但我正在访问它,但我已经给出了条件,如果数据是 None 然后执行这个否则通过,仍然是它的错误。还是我错误地处理了错误路径?我应该如何正确处理这个错误?请纠正我。
class ApiListView(TemplateView):
def get(self, request):
list_view = GetList().get_list_data()
movie_list= list_view.json()
cart_list_view = GetCartList().get_list_data(request).json()
print(request.user)
print(cart_list_view['data'])
total = 0
l = []
if cart_list_view['data'] is not None:
for object in cart_list_view['data']:
obj = object['cart_id']
l.append(obj)
total = len(l)
else:
pass
if self.request.session.session_key:
#session = self.request.session_key
context = {
'movie_list':movie_list,
'home_status':'Show LoggedIn Page',
'total_items': total,
}
return render(request,'content-list.html' , context)
else:
context = {'movie_list':movie_list}
return render(request, 'content-list.html', context)
回溯错误
Environment:
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 2.1
Python Version: 3.6.5
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myuser']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "D:\customuser\venv\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "D:\customuser\venv\lib\site-packages\django\core\handlers\base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "D:\customuser\venv\lib\site-packages\django\core\handlers\base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\customuser\venv\lib\site-packages\django\views\generic\base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "D:\customuser\venv\lib\site-packages\django\views\generic\base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "D:\customuser\venv\signup\myuser\views.py" in get
24. print(cart_list_view['data'])
Exception Type: KeyError at /
Exception Value: 'data'
解决方案
不,这不是您检查字典中是否存在密钥或不更改代码的方式,cart_list_view.get('data')
如果密钥不存在,这将不返回任何内容,或者您可以使用类似if 'data' in cart_list_view
希望有帮助
推荐阅读
- ionic-framework - 离子原生推送通知(Firebase X)不显示应用程序是否在后台
- c++ - 是否可以仅取消隐藏基类的特定重载方法
- javascript - Modify the file before it opens and then open it in a new tab
- django - Target WSGI scriptcannot be loaded as Python module
- python - How to install project in git repository correctly in python?
- python - 如何在 Git repo 中处理应用程序密码
- jboss - ORA-12519 TNS: No appropriate service handler found in JBoss 7.2
- c++ - C++ logical negated comparison operator doesn't work
- c++ - Gradle 和 Cmake 无法找到绝对存在的 cpp 文件
- c# - Mouse events in custom WPF Controls