Django REST framework: Получение 403 при попытке проверить создание нового сообщения

Я пытаюсь создать тест для создания нового сообщения, но получаю ошибку 403. Я читал вопросы в этой теме, но либо они не касались тестирования, либо предложенное решение не работает (я предоставлю информацию о том, что я пробовал до сих пор).

Вот мой код:

urls.py:

app_name = "blog_api"


urlpatterns = [
    path("<str:pk>/", PostDetail.as_view(), name="detail_create"),
    path("", PostList.as_view(), name="list_create"),
]

и мой permissions.py:

class PostUserWritePermission(permissions.BasePermission):
    message = "Editing posts is restricted to the admin and author of the post only."

    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return request.user.is_superuser or request.user == obj.author

А вот мой views.py:

class PostList(generics.ListCreateAPIView):
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    queryset = Post.post_objects.all()
    serializer_class = PostSerializer


class PostDetail(generics.RetrieveUpdateDestroyAPIView):
    permission_classes = [PostUserWritePermission]
    queryset = Post.post_objects.all()
    serializer_class = PostSerializer

И, наконец, мой tests.py:

class PostTests(APITestCase):
    def test_view_posts(self):
        url = reverse("blog_api:list_create")
        response = self.client.get(url, format="json")
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_create_post(self):
        self.test_category = Category.objects.create(name="test category")
        self.test_user = User.objects.create_user(
            username="test_user",
            password="test_password",
        )
        data = {
            "title": "new",
            "author": 1,
            "excerpt": "new",
            "content": "new",
            "slug": "new",
        }
        url = reverse("blog_api:list_create")
        response = self.client.post(url, data, format="json")

        print(response.data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

Итак, когда я тестирую с помощью команды py manage.py test, первый тест проходит нормально, но второй возвращает error 403, и когда я попытался посмотреть ответное сообщение с помощью print(response.data), вот что выводится:

{'detail': ErrorDetail(string='Authentication credentials were not provided.', code='not_authenticated')}

Я также должен упомянуть, что у меня есть эта настройка в моем settings.py файле:

REST_FRAMEWORK = {
    "DEFAULT_PERMISSION_CLASSES": [
        "rest_framework.permissions.IsAuthenticatedOrReadOnly",
    ],
}

Я немного поискал об этом, один вопрос был немного похож на мою проблему, но я создаю своего пользователя методом create_user, поэтому его решение не имеет отношения к моему вопросу. Что я здесь упускаю?

ЧТО Я ПРОБОВАЛ:

Я попытался закомментировать класс разрешения PostUserWritePermission в представлении PostDetail, но все равно получил ту же ошибку.

Также я попытался решить эту проблему, добавив TokenAuthentication в настройки, но и это не помогло.

Вернуться на верх