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)
}