KeyError at "url" method

147 views
Skip to first unread message

Harrys Asimakopoulos

unread,
Sep 5, 2019, 9:30:42 AM9/5/19
to Django REST framework
Hello,
just got back after long time to DRF and im trying to implement login / signup api endpoint.

Signup serializer.py:
class UserCreateSerializer(ModelSerializer):
   
class Meta:
        model
= CustomUser
        fields
= ('email', 'password', 'user_type')
        extra_kwargs
= {"password":
                           
{"write_only": True
                             },
                       
}

       
def create(self, validate_data):
            email
= validate_data['email']
            password
= validate_data['password']
            user_object
= CustomUser(
                email
=email,
           
)
            user_object
.set_password(password)
            user_object
.save()
           
return validate_data
Signup viewset.py
class UserCreateApiView(CreateAPIView):
    """
    API endpoint that creates a user
    """
    queryset = CustomUser.objects.all()
    serializer_class = UserCreateSerializer
    permission_classes
= [AllowAny, ]
urls.py
path('auth/signup/', viewset.UserCreateApiView.as_view(), name='api-signup'),

Everything works fine and as expected, the problem is that the browsable api raise the exception :

Environment:


Request Method: GET

Django Version: 2.2.3
Python Version: 3.7.3
Installed Applications:
['widget_tweaks',
 'rest_framework',
 'jet.dashboard',
 'jet',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'apps.root',
 'apps.user',
 'apps.authentication',
 'apps.dash',
 'api.api_authentication']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'BioActHerb.middleware.cookie_middleware.LanguageCookieMiddleware']



Traceback:

File "C:\Users\Harrys\Anaconda3\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\django\core\handlers\base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\django\core\handlers\base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\django\views\generic\base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\rest_framework\views.py" in dispatch
  495.             response = self.handle_exception(exc)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\rest_framework\views.py" in handle_exception
  455.             self.raise_uncaught_exception(exc)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\rest_framework\views.py" in dispatch
  492.             response = handler(request, *args, **kwargs)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\rest_framework\views.py" in http_method_not_allowed
  169.         raise exceptions.MethodNotAllowed(request.method)

File "C:\Users\Harrys\Anaconda3\lib\site-packages\rest_framework\exceptions.py" in __init__
  198.             detail = force_text(self.default_detail).format(method=method)

Exception Type: KeyError at /api/v1/auth/signup/
Exception Value: 'method"'

If i test the endpoint via POSTMAN it works fine for post method but for get method it returns the whole exception. The get method should just return "method not allowed".

Any idea what is happening?
Thank's in advance.


Lunga Baliwe

unread,
Sep 5, 2019, 10:22:50 AM9/5/19
to django-res...@googlegroups.com
One thing that looks odd is that you are returning validated_data on your serializer instead of the user_object instance.

return validated_data should return user_object

--
You received this message because you are subscribed to the Google Groups "Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-rest-fram...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-rest-framework/86a13219-5740-495f-b2a8-27ce197dd5e8%40googlegroups.com.
Message has been deleted

Jason

unread,
Sep 8, 2019, 7:45:48 PM9/8/19
to Django REST framework
Are you running with DEBUG=True in settings? That’ll make Django return a full trace back on exceptions.

Harrys Asimakopoulos

unread,
Sep 10, 2019, 7:58:21 AM9/10/19
to Django REST framework
Still doesn't works.
Thanks for the answer!
Reply all
Reply to author
Forward
0 new messages