Запрос Django api update/create из тестового примера никогда не вызывал соответствующие методы в сериализаторе
Как я могу отправить запрос UPDATE или CREATE из моего тестового примера? Когда я запускаю свой тестовый пример, методы create/update никогда не срабатывают в сериализаторе... Что я не так понимаю в философии Django? Может кто-нибудь подсказать, что мне делать?
Например:
#View
class filesPairView (viewsets.ModelViewSet):
serializer_class = filesPairViewSerializer
def create(self, request):
...
return Response(status=status.HTTP_201_CREATED)
#Serializer
class filesPairViewSerializer(serializers.ModelSerializer):
class Meta:
...
def create(self, validated_data):
print ("filesPairViewSerializer CREATE")
def update(self, validated_data):
print ("filesPairViewSerializer UPDATE")
#Test case
class filesPairViewTestCase(APITestCase):
def test_barmi(self):
print("test_barmi")
url = ('http://127.0.0.1:8000/api/filesPairView/')
data ={
#some valid data
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
#urls
router.register(r'filesPairView', views.filesPairView )
Сделайте следующее:
#Test case
from django.urls import reverse
class filesPairViewTestCase(APITestCase):
def test_barmi(self):
print("test_barmi")
url = reverse('filespairview-list')
data ={
#some valid data
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
#urls
router.register(r'filesPairView', views.filesPairView, basename='filespairview')
Заметьте, что хитрость здесь заключается в использовании basename, который обычно стоит в единственном числе, что дает следующий результат, основанный на REST:
reverse('filespairview-list')->/filesPairView/-GET- Перечислить всеreverse('filespairview-list')->/filesPairView/-POST- - Создатьreverse('filespairview-detail')->/filesPairView/{int:pk}/- -GET- Получить одинreverse('filespairview-detail')->/filesPairView/{int:pk}/- -POST- Обновить одинreverse('filespairview-detail')->/filesPairView/{int:pk}/- -PATCH- Обновление частичное