首页 > 解决方案 > 基于 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'

标签: pythondjango

解决方案


不,这不是您检查字典中是否存在密钥或不更改代码的方式,cart_list_view.get('data')如果密钥不存在,这将不返回任何内容,或者您​​可以使用类似if 'data' in cart_list_view

希望有帮助


推荐阅读