13

I need to test REST API using postman. API is build using Django REST Framework. Only login user can get access to API. I am not able to find how I can send login credentials using postman. Thanks in advance.

class ApiMemberGroupNameList(views.APIView):
    permission_classes = (
        permissions.IsAuthenticated,
        RequiredOrgPermission,
        RequiredOrgStaffMemberPermission)

    def get(self, request, **kwargs):
        pk = kwargs.get('pk')
        hash = kwargs.get('hash')
        member_obj = get_object_or_404(Member.objects.filter(org__hash=hash, pk=pk))
        return Response(GroupListSerializer(member_obj.groups.all(), many=True).data)
Shahzad Farukh
  • 317
  • 1
  • 2
  • 17
  • Send the login details to your login url with a post request via Postman. I dont know how your authentication works, but your API should return some sort of access token, which you can probably use to access the rest of the API – Snackoverflow Jun 06 '18 at 08:16
  • Continuing on from @Snackoverflow, then you should be able to use the access token using something like https://stackoverflow.com/questions/40539609/how-to-add-authorization-header-in-postman-environment – Wiggy A. Jun 06 '18 at 08:17
  • Authentication is not the token base. It is normal Django authentication using username and password. May we can send cookies info in a way the browser sends to the server. – Shahzad Farukh Jun 06 '18 at 08:20

2 Answers2

15

You can use Basic Auth in POSTMAN. Refer to this screenshot:

enter image description here

You could change the HTTP Methods, URLs, Data Payload(under Body tab) etc in the POSTMAN console

UPDATE-1

After your comments, I tried to recreated the problem.What I did was:

  1. created a view

     from rest_framework.views import APIView
     from rest_framework.permissions import IsAuthenticated
     from rest_framework.response import Response
    
     class MySampleView(APIView):
         permission_classes = (IsAuthenticated,)
    
         def get(self, request):
             return Response(data={"status": True})
    
  2. Added to urls.py

     urlpatterns = [
         url(r'^mysampleview/$', MySampleView.as_view())
     ]
    

And my POSTMAN response are below:

Authorization Screenshot

Header Screenshot

My conclusion

You may enter wrong credentials, or something else. I would suggest you open a new POSTMAN tab and repeat the procedure, also try to login Django admin using the same credential which is already used in POSTMAN.

Baris Senyerli
  • 642
  • 7
  • 13
JPG
  • 82,442
  • 19
  • 127
  • 206
4

If you want to use Basic Authentification to test Django REST API, it must be allowed in Django REST Framework settings:

'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
...