Запрос 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
- Обновление частичное