Fetch : учетные данные для аутентификации не были предоставлены

Когда я запрашиваю это, все в порядке и я получаю данные:

const get_players = async()=>{
    const response = await fetch('http://127.0.0.1:8000/player_stats/api/players/')
    const data     = await response.json()
    console.log(data)
}    

Но когда я помещаю permission_classes в views.py, я получаю следующее в консоли:

{detail: 'Authentication credentials were not provided.}

Я начинающий Javascript, поэтому я буду надеяться, что вы сможете понять.
Я не знаю, как поместить учетные данные аутентификации в мой fech.

Views.py

class PlayersView(ModelViewSet):             
        permission_classes = [IsAuthenticated]
        serializer_class = PlayersSerializer
        queryset         = Players.objects.all()

    def list(self, request):
        queryset   = Players.objects.all()
        serializer = PlayersSerializer(queryset, many=True)
        return Response(serializer.data)

    def retrieve(self, request, pk=None):
        queryset   = Players.objects.all()
        qs         = get_object_or_404(queryset, pk=pk)
        serializer = PlayersSerializer(qs)
        return Response(serializer.data) 

Urls.py

router = DefaultRouter()
router.register('players',views.PlayersView,basename='players') 

app_name = 'main'
urlpatterns = [    
    path('',include(router.urls)),           
]

Есть идеи?

Пользователь в браузере, который выполняет выборку, должен быть аутентифицирован, т.е. войти в систему. Существует несколько способов сделать это. Обратитесь к:

https://www.django-rest-framework.org/api-guide/authentication/

Но в основном, SessionAuthentication будет использовать систему входа пользователей Django, и если вы хотите получить доступ к API без входа в систему, вы можете использовать TokenAuthentication в этом случае, вам нужно добавить HTTP-заголовок к вашему fetch-запросу.

const get_players = async() =>{
    const response = await fetch('http://127.0.0.1:8000/player_stats/api/players/', {
      headers: {
        'Authorization': `Token ${apiToken}`
      }
    })
    const data = await response.json()
    console.log(data)
}
Вернуться на верх