Skip to content

Instantly share code, notes, and snippets.

@ajrouvoet
Last active August 29, 2015 14:12
Show Gist options
  • Save ajrouvoet/4e2dc405cc279b7bda32 to your computer and use it in GitHub Desktop.
Save ajrouvoet/4e2dc405cc279b7bda32 to your computer and use it in GitHub Desktop.
AssertionError at /api/1.0/product
Expected view ProductViewSet to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
Request Method: OPTIONS
Request URL: http://localhost:8000/api/1.0/product
Django Version: 1.7
Exception Type: AssertionError
Exception Expected view ProductViewSet to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
Value:
Exception /home/arjen/repositories/x/y/backend/staging/api/.env/lib/python3.4/
Location: site-packages/rest_framework/generics.py in get_object, line 238
Python /home/arjen/repositories/x/y/backend/staging/api/.env/bin/python
Executable:
Python Version: 3.4.2
['/home/arjen/repositories/x/y/backend/staging/api/src',
'/usr/lib/python34.zip',
'/usr/lib/python3.4',
Python Path: '/usr/lib/python3.4/plat-linux',
'/usr/lib/python3.4/lib-dynload',
'/home/arjen/repositories/x/y/backend/staging/api/.env/lib/python3.4/site-packages']
Server time: Thu, 1 Jan 2015 22:52:51 +0000
Traceback Switch to copy-and-paste view
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/django/core/handlers/base.py in get_response
104. response = middleware_method(request, callback, callback_args, callback_kwargs)
105. if response:
106. break
108. if response is None:
109. wrapped_callback = self.make_view_atomic(callback)
110. try:
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
...
112. except Exception as e:
113. # If the view raised an exception, run it through exception
114. # middleware, and if the exception middleware returns a
115. # response, use that. Otherwise, reraise the exception.
116. for middleware_method in self._exception_middleware:
117. response = middleware_method(request, e)
▶ Local vars
Variable Value
urlconf 'staging.urls'
callback_kwargs {}
'<WSGIRequest\n'
'path:/api/1.0/product,\n'
'GET:<QueryDict: {}>,\n'
'POST:<QueryDict: {}>,\n'
'COOKIES:{},\n'
"META:{'COLORFGBG': '12;default',\n"
" 'COLORTERM': 'rxvt',\n"
" 'CONTENT_LENGTH': '',\n"
" 'CONTENT_TYPE': 'text/plain',\n"
" 'CSRF_COOKIE': 'XWOMYRwGOHY0VwgfSeufTyGWS2sMymf2',\n"
" 'DBUS_SESSION_BUS_ADDRESS': "
"'unix:abstract=/tmp/dbus-ZkFA1r6kek,guid=31d80f0b41781043e230c0eb54a5ad4c',\n"
" 'DERBY_HOME': '/opt/java/db',\n"
" 'DISPLAY': ':0.0',\n"
" 'DJANGO_SETTINGS_MODULE': 'staging.settings',\n"
" 'EDITOR': 'vim',\n"
" 'GATEWAY_INTERFACE': 'CGI/1.1',\n"
" 'GPG_AGENT_INFO': '/run/user/1000/keyring/gpg:0:1',\n"
" 'GRADLE_HOME': '/usr/share/java/gradle',\n"
" 'GTK_MODULES': 'canberra-gtk-module',\n"
" 'HG': '/usr/bin/hg',\n"
" 'HISTFILE': '/home/arjen/.history',\n"
" 'HISTSIZE': '10000',\n"
" 'HOME': '/home/arjen',\n"
" 'HTTP_ACCEPT': 'application/json; indent=2',\n"
" 'HTTP_HOST': 'localhost:8000',\n"
" 'HTTP_USER_AGENT': 'curl/7.39.0',\n"
" 'J2REDIR': '/opt/java/jre',\n"
" 'J2SDKDIR': '/opt/java',\n"
" 'JAVA_HOME': '/opt/java',\n"
" 'LANG': 'en_US.UTF-8',\n"
" 'LIQUIBASE_HOME': '/opt/liquibase/',\n"
" 'LOGNAME': 'arjen',\n"
" 'MAIL': '/var/spool/mail/arjen',\n"
" 'MOZ_PLUGIN_PATH': '/usr/lib/mozilla/plugins',\n"
" 'OLDPWD': '/home/arjen',\n"
" 'PANEL_FIFO': '/tmp/panel-fifo',\n"
" 'PANEL_HEIGHT': '20',\n"
" 'PATH': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env/bin:/home/arjen/.local/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/android-sdk/build-tools/19.0.3/:/opt/android-sdk/platform-tools:/usr/share/java/gradle/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/lib/jvm/default/bin:/opt/liquibase/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/ruby/gems/1.9.1/:/usr/lib/ruby/gems/2.0.0/:/home/arjen/.gem/ruby/2.0.0/bin/:/home/arjen/.gem/ruby/2.1.0/bin/:/home/arjen/.cabal/bin',\n"
" 'PATH_INFO': '/api/1.0/product',\n"
" 'PS1': '(.env) \\n %{\\x1b[37m%}%~%{\\x1b[36m%} λ "
"%{\\x1b[37m%}%{\\x1b[00m%} ',\n"
request " 'PWD': '/home/arjen/repositories/x/y/backend/staging/api/src',\n"
" 'QUERY_STRING': '',\n"
" 'REMOTE_ADDR': '127.0.0.1',\n"
" 'REMOTE_HOST': '',\n"
" 'REQUEST_METHOD': 'OPTIONS',\n"
" 'RUN_MAIN': 'true',\n"
" 'SAVEHIST': '10000',\n"
" 'SBT_OPTS': '-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled '\n"
" '-XX:MaxPermSize=256M',\n"
" 'SCRIPT_NAME': '',\n"
" 'SERVER_NAME': 'localhost.localdomain',\n"
" 'SERVER_PORT': '8000',\n"
" 'SERVER_PROTOCOL': 'HTTP/1.1',\n"
" 'SERVER_SOFTWARE': 'WSGIServer/0.2',\n"
" 'SHELL': '/bin/zsh',\n"
" 'SHLVL': '4',\n"
" 'SSH_AGENT_PID': '540',\n"
" 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',\n"
" 'TERM': 'rxvt-unicode-256color',\n"
" 'TERMINFO': '/usr/share/terminfo',\n"
" 'TZ': 'UTC',\n"
" 'USER': 'arjen',\n"
" 'VIRTUAL_ENV': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env',\n"
" 'WINDOWID': '56623114',\n"
" 'WINDOWPATH': '1',\n"
" 'XAUTHORITY': '/home/arjen/.Xauthority',\n"
" 'XDG_CONFIG_HOME': '/home/arjen/.config',\n"
" 'XDG_RUNTIME_DIR': '/run/user/1000',\n"
" 'XDG_SEAT': 'seat0',\n"
" 'XDG_SESSION_ID': 'c1',\n"
" 'XDG_VTNR': '1',\n"
" '_': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env/bin/python',\n"
" '_JAVA_AWT_WM_NONREPARENTING': '1',\n"
" 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' "
"encoding='UTF-8'>,\n"
" 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,\n"
" 'wsgi.input': <_io.BufferedReader name=6>,\n"
" 'wsgi.multiprocess': False,\n"
" 'wsgi.multithread': True,\n"
" 'wsgi.run_once': False,\n"
" 'wsgi.url_scheme': 'http',\n"
" 'wsgi.version': (1, 0)}>"
resolver <RegexURLResolver 'staging.urls' (None:None) ^/>
callback <function ProductViewSet at 0x7f4900a70620>
wrapped_callback <function ProductViewSet at 0x7f4900a70620>
response None
self <django.core.handlers.wsgi.WSGIHandler object at 0x7f490457c5c0>
resolver_match ResolverMatch(func=<function ProductViewSet at 0x7f4900a70620>, args=(), kwargs={}, url_name='product-list', app_name='None', namespace='')
middleware_method <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f48fffc24a8>>
callback_args ()
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/django/views/decorators/csrf.py in wrapped_view
50. """
51. Marks a view function as being exempt from the CSRF view protection.
52. """
53. # We could just do view_func.csrf_exempt = True, but decorators
54. # are nicer if they don't have side-effects, so we return a new
55. # function.
56. def wrapped_view(*args, **kwargs):
57. return view_func(*args, **kwargs)
...
58. wrapped_view.csrf_exempt = True
59. return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)
▶ Local vars
Variable Value
(<WSGIRequest
path:/api/1.0/product,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{},
META:{'COLORFGBG': '12;default',
'COLORTERM': 'rxvt',
'CONTENT_LENGTH': '',
'CONTENT_TYPE': 'text/plain',
'CSRF_COOKIE': 'XWOMYRwGOHY0VwgfSeufTyGWS2sMymf2',
'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-ZkFA1r6kek,guid=31d80f0b41781043e230c0eb54a5ad4c',
'DERBY_HOME': '/opt/java/db',
'DISPLAY': ':0.0',
'DJANGO_SETTINGS_MODULE': 'staging.settings',
'EDITOR': 'vim',
'GATEWAY_INTERFACE': 'CGI/1.1',
'GPG_AGENT_INFO': '/run/user/1000/keyring/gpg:0:1',
'GRADLE_HOME': '/usr/share/java/gradle',
'GTK_MODULES': 'canberra-gtk-module',
'HG': '/usr/bin/hg',
'HISTFILE': '/home/arjen/.history',
'HISTSIZE': '10000',
'HOME': '/home/arjen',
'HTTP_ACCEPT': 'application/json; indent=2',
'HTTP_HOST': 'localhost:8000',
'HTTP_USER_AGENT': 'curl/7.39.0',
'J2REDIR': '/opt/java/jre',
'J2SDKDIR': '/opt/java',
'JAVA_HOME': '/opt/java',
'LANG': 'en_US.UTF-8',
'LIQUIBASE_HOME': '/opt/liquibase/',
'LOGNAME': 'arjen',
'MAIL': '/var/spool/mail/arjen',
'MOZ_PLUGIN_PATH': '/usr/lib/mozilla/plugins',
'OLDPWD': '/home/arjen',
'PANEL_FIFO': '/tmp/panel-fifo',
'PANEL_HEIGHT': '20',
'PATH': '/home/arjen/repositories/x/y/backend/staging/api/.env/bin:/home/arjen/.local/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/android-sdk/build-tools/19.0.3/:/opt/android-sdk/platform-tools:/usr/share/java/gradle/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/lib/jvm/default/bin:/opt/liquibase/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/ruby/gems/1.9.1/:/usr/lib/ruby/gems/2.0.0/:/home/arjen/.gem/ruby/2.0.0/bin/:/home/arjen/.gem/ruby/2.1.0/bin/:/home/arjen/.cabal/bin',
'PATH_INFO': '/api/1.0/product',
'PS1': '(.env) \n %{\x1b[37m%}%~%{\x1b[36m%} λ %{\x1b[37m%}%{\x1b[00m%} ',
args 'PWD': '/home/arjen/repositories/x/y/backend/staging/api/src',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_HOST': '',
'REQUEST_METHOD': 'OPTIONS',
'RUN_MAIN': 'true',
'SAVEHIST': '10000',
'SBT_OPTS': '-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled '
'-XX:MaxPermSize=256M',
'SCRIPT_NAME': '',
'SERVER_NAME': 'localhost.localdomain',
'SERVER_PORT': '8000',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'SHELL': '/bin/zsh',
'SHLVL': '4',
'SSH_AGENT_PID': '540',
'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',
'TERM': 'rxvt-unicode-256color',
'TERMINFO': '/usr/share/terminfo',
'TZ': 'UTC',
'USER': 'arjen',
'VIRTUAL_ENV': '/home/arjen/repositories/x/y/backend/staging/api/.env',
'WINDOWID': '56623114',
'WINDOWPATH': '1',
'XAUTHORITY': '/home/arjen/.Xauthority',
'XDG_CONFIG_HOME': '/home/arjen/.config',
'XDG_RUNTIME_DIR': '/run/user/1000',
'XDG_SEAT': 'seat0',
'XDG_SESSION_ID': 'c1',
'XDG_VTNR': '1',
'_': '/home/arjen/repositories/x/y/backend/staging/api/.env/bin/python',
'_JAVA_AWT_WM_NONREPARENTING': '1',
'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
'wsgi.input': <_io.BufferedReader name=6>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>,)
view_func <function ProductViewSet at 0x7f4902ac2510>
kwargs {}
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/viewsets.py in view
78. setattr(self, method, handler)
80. # Patch this in as it's otherwise only present from 1.5 onwards
81. if hasattr(self, 'get') and not hasattr(self, 'head'):
82. self.head = self.get
84. # And continue as usual
85. return self.dispatch(request, *args, **kwargs)
...
87. # take name and docstring from class
88. update_wrapper(view, cls, updated=())
90. # and possible attributes set by decorators
91. # like csrf_exempt from dispatch
▶ Local vars
Variable Value
cls <class 'core.views.ProductViewSet'>
method 'delete'
action 'batch_delete'
self <core.views.ProductViewSet object at 0x7f48febf9c88>
initkwargs {'suffix': 'List'}
kwargs {}
handler <bound method ProductViewSet.batch_delete of <core.views.ProductViewSet object at 0x7f48febf9c88>>
'<WSGIRequest\n'
'path:/api/1.0/product,\n'
'GET:<QueryDict: {}>,\n'
'POST:<QueryDict: {}>,\n'
'COOKIES:{},\n'
"META:{'COLORFGBG': '12;default',\n"
" 'COLORTERM': 'rxvt',\n"
" 'CONTENT_LENGTH': '',\n"
" 'CONTENT_TYPE': 'text/plain',\n"
" 'CSRF_COOKIE': 'XWOMYRwGOHY0VwgfSeufTyGWS2sMymf2',\n"
" 'DBUS_SESSION_BUS_ADDRESS': "
"'unix:abstract=/tmp/dbus-ZkFA1r6kek,guid=31d80f0b41781043e230c0eb54a5ad4c',\n"
" 'DERBY_HOME': '/opt/java/db',\n"
" 'DISPLAY': ':0.0',\n"
" 'DJANGO_SETTINGS_MODULE': 'staging.settings',\n"
" 'EDITOR': 'vim',\n"
" 'GATEWAY_INTERFACE': 'CGI/1.1',\n"
" 'GPG_AGENT_INFO': '/run/user/1000/keyring/gpg:0:1',\n"
" 'GRADLE_HOME': '/usr/share/java/gradle',\n"
" 'GTK_MODULES': 'canberra-gtk-module',\n"
" 'HG': '/usr/bin/hg',\n"
" 'HISTFILE': '/home/arjen/.history',\n"
" 'HISTSIZE': '10000',\n"
" 'HOME': '/home/arjen',\n"
" 'HTTP_ACCEPT': 'application/json; indent=2',\n"
" 'HTTP_HOST': 'localhost:8000',\n"
" 'HTTP_USER_AGENT': 'curl/7.39.0',\n"
" 'J2REDIR': '/opt/java/jre',\n"
" 'J2SDKDIR': '/opt/java',\n"
" 'JAVA_HOME': '/opt/java',\n"
" 'LANG': 'en_US.UTF-8',\n"
" 'LIQUIBASE_HOME': '/opt/liquibase/',\n"
" 'LOGNAME': 'arjen',\n"
" 'MAIL': '/var/spool/mail/arjen',\n"
" 'MOZ_PLUGIN_PATH': '/usr/lib/mozilla/plugins',\n"
" 'OLDPWD': '/home/arjen',\n"
" 'PANEL_FIFO': '/tmp/panel-fifo',\n"
" 'PANEL_HEIGHT': '20',\n"
" 'PATH': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env/bin:/home/arjen/.local/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/android-sdk/build-tools/19.0.3/:/opt/android-sdk/platform-tools:/usr/share/java/gradle/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/lib/jvm/default/bin:/opt/liquibase/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/ruby/gems/1.9.1/:/usr/lib/ruby/gems/2.0.0/:/home/arjen/.gem/ruby/2.0.0/bin/:/home/arjen/.gem/ruby/2.1.0/bin/:/home/arjen/.cabal/bin',\n"
" 'PATH_INFO': '/api/1.0/product',\n"
" 'PS1': '(.env) \\n %{\\x1b[37m%}%~%{\\x1b[36m%} λ "
"%{\\x1b[37m%}%{\\x1b[00m%} ',\n"
request " 'PWD': '/home/arjen/repositories/x/y/backend/staging/api/src',\n"
" 'QUERY_STRING': '',\n"
" 'REMOTE_ADDR': '127.0.0.1',\n"
" 'REMOTE_HOST': '',\n"
" 'REQUEST_METHOD': 'OPTIONS',\n"
" 'RUN_MAIN': 'true',\n"
" 'SAVEHIST': '10000',\n"
" 'SBT_OPTS': '-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled '\n"
" '-XX:MaxPermSize=256M',\n"
" 'SCRIPT_NAME': '',\n"
" 'SERVER_NAME': 'localhost.localdomain',\n"
" 'SERVER_PORT': '8000',\n"
" 'SERVER_PROTOCOL': 'HTTP/1.1',\n"
" 'SERVER_SOFTWARE': 'WSGIServer/0.2',\n"
" 'SHELL': '/bin/zsh',\n"
" 'SHLVL': '4',\n"
" 'SSH_AGENT_PID': '540',\n"
" 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',\n"
" 'TERM': 'rxvt-unicode-256color',\n"
" 'TERMINFO': '/usr/share/terminfo',\n"
" 'TZ': 'UTC',\n"
" 'USER': 'arjen',\n"
" 'VIRTUAL_ENV': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env',\n"
" 'WINDOWID': '56623114',\n"
" 'WINDOWPATH': '1',\n"
" 'XAUTHORITY': '/home/arjen/.Xauthority',\n"
" 'XDG_CONFIG_HOME': '/home/arjen/.config',\n"
" 'XDG_RUNTIME_DIR': '/run/user/1000',\n"
" 'XDG_SEAT': 'seat0',\n"
" 'XDG_SESSION_ID': 'c1',\n"
" 'XDG_VTNR': '1',\n"
" '_': "
"'/home/arjen/repositories/x/y/backend/staging/api/.env/bin/python',\n"
" '_JAVA_AWT_WM_NONREPARENTING': '1',\n"
" 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' "
"encoding='UTF-8'>,\n"
" 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,\n"
" 'wsgi.input': <_io.BufferedReader name=6>,\n"
" 'wsgi.multiprocess': False,\n"
" 'wsgi.multithread': True,\n"
" 'wsgi.run_once': False,\n"
" 'wsgi.url_scheme': 'http',\n"
" 'wsgi.version': (1, 0)}>"
args ()
actions {'delete': 'batch_delete', 'get': 'list', 'put': 'batch_update'}
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/views.py in dispatch
400. self.http_method_not_allowed)
401. else:
402. handler = self.http_method_not_allowed
404. response = handler(request, *args, **kwargs)
406. except Exception as exc:
407. response = self.handle_exception(exc)
...
409. self.response = self.finalize_response(request, response, *args, **kwargs)
410. return self.response
412. def options(self, request, *args, **kwargs):
413. """
▶ Local vars
Variable Value
args ()
request <rest_framework.request.Request object at 0x7f48febf9e48>
handler <bound method ProductViewSet.options of <core.views.ProductViewSet object at 0x7f48febf9c88>>
kwargs {}
self <core.views.ProductViewSet object at 0x7f48febf9c88>
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/views.py in dispatch
397. # Get the appropriate handler method
398. if request.method.lower() in self.http_method_names:
399. handler = getattr(self, request.method.lower(),
400. self.http_method_not_allowed)
401. else:
402. handler = self.http_method_not_allowed
404. response = handler(request, *args, **kwargs)
...
406. except Exception as exc:
407. response = self.handle_exception(exc)
409. self.response = self.finalize_response(request, response, *args, **kwargs)
410. return self.response
▶ Local vars
Variable Value
args ()
request <rest_framework.request.Request object at 0x7f48febf9e48>
handler <bound method ProductViewSet.options of <core.views.ProductViewSet object at 0x7f48febf9c88>>
kwargs {}
self <core.views.ProductViewSet object at 0x7f48febf9c88>
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/views.py in options
412. def options(self, request, *args, **kwargs):
413. """
414. Handler method for HTTP 'OPTIONS' request.
415. """
416. if self.metadata_class is None:
417. return self.http_method_not_allowed(request, *args, **kwargs)
418. data = self.metadata_class().determine_metadata(request, self)
...
419. return Response(data, status=status.HTTP_200_OK)
▶ Local vars
Variable Value
args ()
request <rest_framework.request.Request object at 0x7f48febf9e48>
kwargs {}
self <core.views.ProductViewSet object at 0x7f48febf9c88>
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/metadata.py in determine_metadata
56. def determine_metadata(self, request, view):
57. metadata = OrderedDict()
58. metadata['name'] = view.get_view_name()
59. metadata['description'] = view.get_view_description()
60. metadata['renders'] = [renderer.media_type for renderer in view.renderer_classes]
61. metadata['parses'] = [parser.media_type for parser in view.parser_classes]
62. if hasattr(view, 'get_serializer'):
63. actions = self.determine_actions(request, view)
...
64. if actions:
65. metadata['actions'] = actions
66. return metadata
68. def determine_actions(self, request, view):
69. """
▶ Local vars
Variable Value
view <core.views.ProductViewSet object at 0x7f48febf9c88>
request <rest_framework.request.Request object at 0x7f48febf9e48>
self <rest_framework.metadata.SimpleMetadata object at 0x7f48febf9da0>
{'name': 'Product List',
'description': '',
metadata 'renders': ['application/json', 'text/html'],
'parses': ['application/json',
'application/x-www-form-urlencoded',
'multipart/form-data']}
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/metadata.py in determine_actions
75. view.request = clone_request(request, method)
76. try:
77. # Test global permissions
78. if hasattr(view, 'check_permissions'):
79. view.check_permissions(view.request)
80. # Test object permissions
81. if method == 'PUT' and hasattr(view, 'get_object'):
82. view.get_object()
...
83. except (exceptions.APIException, PermissionDenied, Http404):
84. pass
85. else:
86. # If user has appropriate permissions for the view, include
87. # appropriate metadata about the fields that should be supplied.
88. serializer = view.get_serializer()
▶ Local vars
Variable Value
view <core.views.ProductViewSet object at 0x7f48febf9c88>
method 'PUT'
self <rest_framework.metadata.SimpleMetadata object at 0x7f48febf9da0>
request <rest_framework.request.Request object at 0x7f48febf9e48>
actions {}
• /home/arjen/repositories/x/y/backend/staging/api/.env/lib/
python3.4/site-packages/rest_framework/generics.py in get_object
231. # Perform the lookup filtering.
232. lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
234. assert lookup_url_kwarg in self.kwargs, (
235. 'Expected view %s to be called with a URL keyword argument '
236. 'named "%s". Fix your URL conf, or set the `.lookup_field` '
237. 'attribute on the view correctly.' %
238. (self.__class__.__name__, lookup_url_kwarg)
...
239. )
241. filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
242. obj = get_object_or_404(queryset, **filter_kwargs)
244. # May raise a permission denied
▶ Local vars
Variable Value
self <core.views.ProductViewSet object at 0x7f48febf9c88>
lookup_url_kwarg 'pk'
queryset [<Product: [1] Apples>]
[Environment: ]
[ ]
[ ]
[Request Method: OPTIONS ]
[Request URL: http://localhost:8000/api/1.0/product ]
[ ]
[Django Version: 1.7 ]
[Python Version: 3.4.2 ]
[Installed Applications: ]
[('django.contrib.admin', ]
[ 'django.contrib.auth', ]
[ 'django.contrib.contenttypes', ]
[ 'django.contrib.sessions', ]
[ 'django.contrib.messages', ]
[ 'django.contrib.staticfiles', ]
[ 'corsheaders', ]
[ 'rest_framework', ]
[ 'core') ]
[Installed Middleware: ]
[('django.contrib.sessions.middleware.SessionMiddleware', ]
[ 'corsheaders.middleware.CorsMiddleware', ]
[ 'django.middleware.common.CommonMiddleware', ]
[ 'django.middleware.csrf.CsrfViewMiddleware', ]
[ 'django.contrib.auth.middleware.AuthenticationMiddleware', ]
[ 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', ]
[Share this traceback on a public Web site]
Request information
GET
No GET data
POST
No POST data
FILES
No FILES data
COOKIES
No cookie data
META
Variable Value
wsgi.multiprocess False
TZ 'UTC'
XDG_VTNR '1'
QUERY_STRING ''
HG '/usr/bin/hg'
HTTP_ACCEPT 'application/json; indent=2'
HOME '/home/arjen'
LIQUIBASE_HOME '/opt/liquibase/'
PS1 '(.env) \n %{\x1b[37m%}%~%{\x1b[36m%} λ %{\x1b[37m%}%{\x1b[00m%} '
MOZ_PLUGIN_PATH '/usr/lib/mozilla/plugins'
SERVER_SOFTWARE 'WSGIServer/0.2'
GATEWAY_INTERFACE 'CGI/1.1'
HISTSIZE '10000'
XDG_RUNTIME_DIR '/run/user/1000'
USER 'arjen'
_JAVA_AWT_WM_NONREPARENTING '1'
MAIL '/var/spool/mail/arjen'
XDG_SESSION_ID 'c1'
DISPLAY ':0.0'
COLORTERM 'rxvt'
wsgi.file_wrapper ''
PANEL_HEIGHT '20'
J2REDIR '/opt/java/jre'
HISTFILE '/home/arjen/.history'
DBUS_SESSION_BUS_ADDRESS 'unix:abstract=/tmp/dbus-ZkFA1r6kek,guid=31d80f0b41781043e230c0eb54a5ad4c'
TERM 'rxvt-unicode-256color'
wsgi.url_scheme 'http'
SAVEHIST '10000'
wsgi.version (1, 0)
JAVA_HOME '/opt/java'
PATH_INFO '/api/1.0/product'
_ '/home/arjen/repositories/x/y/backend/staging/api/.env/bin/python'
GPG_AGENT_INFO '/run/user/1000/keyring/gpg:0:1'
PATH '/home/arjen/repositories/x/y/backend/staging/api/.env/bin:/home/arjen/.local/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/android-sdk/build-tools/19.0.3/:/opt/android-sdk/platform-tools:/usr/share/java/gradle/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/lib/jvm/default/bin:/opt/liquibase/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/ruby/gems/1.9.1/:/usr/lib/ruby/gems/2.0.0/:/home/arjen/.gem/ruby/2.0.0/bin/:/home/arjen/.gem/ruby/2.1.0/bin/:/home/arjen/.cabal/bin'
SBT_OPTS '-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M'
wsgi.input <_io.BufferedReader name=6>
REMOTE_ADDR '127.0.0.1'
CONTENT_TYPE 'text/plain'
CONTENT_LENGTH ''
LANG 'en_US.UTF-8'
wsgi.errors <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
TERMINFO '/usr/share/terminfo'
PWD '/home/arjen/repositories/x/y/backend/staging/api/src'
REQUEST_METHOD 'OPTIONS'
GTK_MODULES 'canberra-gtk-module'
DJANGO_SETTINGS_MODULE 'staging.settings'
RUN_MAIN 'true'
GRADLE_HOME '/usr/share/java/gradle'
SERVER_NAME 'localhost.localdomain'
J2SDKDIR '/opt/java'
XDG_CONFIG_HOME '/home/arjen/.config'
HTTP_USER_AGENT 'curl/7.39.0'
REMOTE_HOST ''
COLORFGBG '12;default'
XDG_SEAT 'seat0'
LOGNAME 'arjen'
XAUTHORITY '/home/arjen/.Xauthority'
OLDPWD '/home/arjen'
SERVER_PROTOCOL 'HTTP/1.1'
wsgi.run_once False
EDITOR 'vim'
SERVER_PORT '8000'
DERBY_HOME '/opt/java/db'
SHELL '/bin/zsh'
VIRTUAL_ENV '/home/arjen/repositories/x/y/backend/staging/api/.env'
WINDOWPATH '1'
PANEL_FIFO '/tmp/panel-fifo'
SSH_AUTH_SOCK '/run/user/1000/keyring/ssh'
HTTP_HOST 'localhost:8000'
WINDOWID '56623114'
CSRF_COOKIE 'XWOMYRwGOHY0VwgfSeufTyGWS2sMymf2'
SHLVL '4'
SCRIPT_NAME ''
SSH_AGENT_PID '540'
wsgi.multithread True
Settings
Using settings module staging.settings
Setting Value
SESSION_EXPIRE_AT_BROWSER_CLOSE False
CSRF_COOKIE_PATH '/'
EMAIL_USE_TLS False
EMAIL_HOST_USER ''
WSGI_APPLICATION 'staging.wsgi.application'
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
INSTALLED_APPS 'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'rest_framework',
'core')
SESSION_CACHE_ALIAS 'default'
USE_X_FORWARDED_HOST False
LOCALE_PATHS ()
SESSION_SAVE_EVERY_REQUEST False
DEFAULT_INDEX_TABLESPACE ''
SEND_BROKEN_LINK_EMAILS False
ROOT_URLCONF 'staging.urls'
DEFAULT_CONTENT_TYPE 'text/html'
USE_I18N True
SESSION_COOKIE_PATH '/'
SETTINGS_MODULE 'staging.settings'
TEST_RUNNER 'django.test.runner.DiscoverRunner'
('%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M',
'%Y-%m-%d',
'%m/%d/%Y %H:%M:%S',
'%m/%d/%Y %H:%M:%S.%f',
DATETIME_INPUT_FORMATS '%m/%d/%Y %H:%M',
'%m/%d/%Y',
'%m/%d/%y %H:%M:%S',
'%m/%d/%y %H:%M:%S.%f',
'%m/%d/%y %H:%M',
'%m/%d/%y')
SECRET_KEY '********************'
APPEND_SLASH True
DEFAULT_CHARSET 'utf-8'
COMMENTS_ALLOW_PROFANITIES False
FILE_CHARSET 'utf-8'
TIME_ZONE 'UTC'
EMAIL_HOST 'localhost'
LOGOUT_URL '/accounts/logout/'
NUMBER_GROUPING 0
DECIMAL_SEPARATOR '.'
MONTH_DAY_FORMAT 'F j'
AUTH_USER_MODEL 'auth.User'
CACHE_MIDDLEWARE_ALIAS 'default'
MESSAGE_STORAGE 'django.contrib.messages.storage.fallback.FallbackStorage'
USE_TZ True
STATIC_URL '/static/'
FILE_UPLOAD_DIRECTORY_PERMISSIONS None
SESSION_COOKIE_AGE 1209600
LOGGING_CONFIG 'logging.config.dictConfig'
CACHE_MIDDLEWARE_SECONDS 600
SESSION_COOKIE_DOMAIN None
SIGNING_BACKEND 'django.core.signing.TimestampSigner'
THOUSAND_SEPARATOR ','
('django.contrib.staticfiles.finders.FileSystemFinder',
STATICFILES_FINDERS 'django.contrib.staticfiles.finders.AppDirectoriesFinder')
ALLOWED_HOSTS []
DISALLOWED_USER_AGENTS ()
FIXTURE_DIRS ('/home/arjen/repositories/x/y/backend/staging/api/src/fixtures/',)
DEFAULT_FILE_STORAGE 'django.core.files.storage.FileSystemStorage'
YEAR_MONTH_FORMAT 'F Y'
ALLOWED_INCLUDE_ROOTS ()
PASSWORD_RESET_TIMEOUT_DAYS '********************'
TRANSACTIONS_MANAGED False
ADMIN_FOR ()
STATIC_ROOT None
FILE_UPLOAD_MAX_MEMORY_SIZE 2621440
USE_ETAGS False
PASSWORD_HASHERS '********************'
LOGIN_URL '/accounts/login/'
USE_L10N True
ADMINS ()
CSRF_COOKIE_NAME 'csrftoken'
(('af', 'Afrikaans'),
('ar', 'Arabic'),
('ast', 'Asturian'),
('az', 'Azerbaijani'),
('bg', 'Bulgarian'),
('be', 'Belarusian'),
('bn', 'Bengali'),
('br', 'Breton'),
('bs', 'Bosnian'),
('ca', 'Catalan'),
('cs', 'Czech'),
('cy', 'Welsh'),
('da', 'Danish'),
('de', 'German'),
('el', 'Greek'),
('en', 'English'),
('en-au', 'Australian English'),
('en-gb', 'British English'),
('eo', 'Esperanto'),
('es', 'Spanish'),
('es-ar', 'Argentinian Spanish'),
('es-mx', 'Mexican Spanish'),
('es-ni', 'Nicaraguan Spanish'),
('es-ve', 'Venezuelan Spanish'),
('et', 'Estonian'),
('eu', 'Basque'),
('fa', 'Persian'),
('fi', 'Finnish'),
('fr', 'French'),
('fy', 'Frisian'),
('ga', 'Irish'),
('gl', 'Galician'),
('he', 'Hebrew'),
('hi', 'Hindi'),
('hr', 'Croatian'),
('hu', 'Hungarian'),
('ia', 'Interlingua'),
('id', 'Indonesian'),
('io', 'Ido'),
('is', 'Icelandic'),
('it', 'Italian'),
('ja', 'Japanese'),
('ka', 'Georgian'),
LANGUAGES ('kk', 'Kazakh'),
('km', 'Khmer'),
('kn', 'Kannada'),
('ko', 'Korean'),
('lb', 'Luxembourgish'),
('lt', 'Lithuanian'),
('lv', 'Latvian'),
('mk', 'Macedonian'),
('ml', 'Malayalam'),
('mn', 'Mongolian'),
('mr', 'Marathi'),
('my', 'Burmese'),
('nb', 'Norwegian Bokmal'),
('ne', 'Nepali'),
('nl', 'Dutch'),
('nn', 'Norwegian Nynorsk'),
('os', 'Ossetic'),
('pa', 'Punjabi'),
('pl', 'Polish'),
('pt', 'Portuguese'),
('pt-br', 'Brazilian Portuguese'),
('ro', 'Romanian'),
('ru', 'Russian'),
('sk', 'Slovak'),
('sl', 'Slovenian'),
('sq', 'Albanian'),
('sr', 'Serbian'),
('sr-latn', 'Serbian Latin'),
('sv', 'Swedish'),
('sw', 'Swahili'),
('ta', 'Tamil'),
('te', 'Telugu'),
('th', 'Thai'),
('tr', 'Turkish'),
('tt', 'Tatar'),
('udm', 'Udmurt'),
('uk', 'Ukrainian'),
('ur', 'Urdu'),
('vi', 'Vietnamese'),
('zh-cn', 'Simplified Chinese'),
('zh-hans', 'Simplified Chinese'),
('zh-hant', 'Traditional Chinese'),
('zh-tw', 'Traditional Chinese'))
CORS_ORIGIN_ALLOW_ALL True
SESSION_COOKIE_NAME 'sessionid'
TEMPLATE_DIRS ()
SESSION_COOKIE_SECURE False
TEMPLATE_STRING_IF_INVALID ''
DEBUG True
EMAIL_PORT 25
SHORT_DATE_FORMAT 'm/d/Y'
CSRF_COOKIE_HTTPONLY False
SHORT_DATETIME_FORMAT 'm/d/Y P'
TEMPLATE_DEBUG True
LOGIN_REDIRECT_URL '/accounts/profile/'
MIGRATION_MODULES {}
PREPEND_WWW False
MEDIA_URL ''
STATICFILES_STORAGE 'django.contrib.staticfiles.storage.StaticFilesStorage'
DEBUG_PROPAGATE_EXCEPTIONS False
LOGGING {}
DEFAULT_EXCEPTION_REPORTER_FILTER 'django.views.debug.SafeExceptionReporterFilter'
CSRF_COOKIE_DOMAIN None
('django.template.loaders.filesystem.Loader',
TEMPLATE_LOADERS 'django.template.loaders.app_directories.Loader')
FILE_UPLOAD_TEMP_DIR None
FORCE_SCRIPT_NAME None
ABSOLUTE_URL_OVERRIDES {}
EMAIL_BACKEND 'django.core.mail.backends.smtp.EmailBackend'
{'default': {'ATOMIC_REQUESTS': False,
'AUTOCOMMIT': True,
'CONN_MAX_AGE': 0,
'ENGINE': 'django.db.backends.sqlite3',
'HOST': '',
'NAME': '/home/arjen/repositories/x/y/backend/staging/api/src/db.sqlite3',
'OPTIONS': {},
DATABASES 'PASSWORD': '********************',
'PORT': '',
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': 'UTC',
'USER': ''}}
LANGUAGE_COOKIE_DOMAIN None
DATETIME_FORMAT 'N j, Y, P'
BASE_DIR '/home/arjen/repositories/x/y/backend/staging/api/src'
SECURE_PROXY_SSL_HEADER None
TEST_NON_SERIALIZED_APPS []
('django.core.files.uploadhandler.MemoryFileUploadHandler',
FILE_UPLOAD_HANDLERS 'django.core.files.uploadhandler.TemporaryFileUploadHandler')
SERVER_EMAIL 'root@localhost'
LANGUAGE_COOKIE_PATH '/'
PROFANITIES_LIST '********************'
TIME_INPUT_FORMATS ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M')
SESSION_FILE_PATH None
('%Y-%m-%d',
'%m/%d/%Y',
'%m/%d/%y',
'%b %d %Y',
'%b %d, %Y',
DATE_INPUT_FORMATS '%d %b %Y',
'%d %b, %Y',
'%B %d %Y',
'%B %d, %Y',
'%d %B %Y',
'%d %B, %Y')
CACHES {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
X_FRAME_OPTIONS 'SAMEORIGIN'
LANGUAGE_CODE 'en-us'
INTERNAL_IPS ()
EMAIL_HOST_PASSWORD '********************'
SESSION_ENGINE 'django.contrib.sessions.backends.db'
FORMAT_MODULE_PATH None
EMAIL_SUBJECT_PREFIX '[Django] '
SESSION_COOKIE_HTTPONLY True
DEFAULT_TABLESPACE ''
LANGUAGES_BIDI ('he', 'ar', 'fa', 'ur')
CSRF_COOKIE_AGE 31449600
CSRF_FAILURE_VIEW 'django.views.csrf.csrf_failure'
('django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
MIDDLEWARE_CLASSES 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
DEFAULT_FROM_EMAIL 'webmaster@localhost'
DATE_FORMAT 'N j, Y'
SESSION_SERIALIZER 'django.contrib.sessions.serializers.JSONSerializer'
MANAGERS ()
CACHE_MIDDLEWARE_KEY_PREFIX '********************'
EMAIL_USE_SSL False
USE_THOUSAND_SEPARATOR False
IGNORABLE_404_URLS ()
FILE_UPLOAD_PERMISSIONS None
LANGUAGE_COOKIE_NAME 'django_language'
SILENCED_SYSTEM_CHECKS []
MEDIA_ROOT ''
AUTHENTICATION_BACKENDS ('django.contrib.auth.backends.ModelBackend',)
DATABASE_ROUTERS []
('django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
TEMPLATE_CONTEXT_PROCESSORS 'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.tz',
'django.contrib.messages.context_processors.messages')
TIME_FORMAT 'P'
STATICFILES_DIRS ()
FIRST_DAY_OF_WEEK 0
LANGUAGE_COOKIE_AGE None
CSRF_COOKIE_SECURE False
You're seeing this error because you have DEBUG = True in your Django settings
file. Change that to False, and Django will display a standard 500 page.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment