Ошибка фреймворка Django rest : django.core.exceptions.ImproperlyConfigured: Маршрутизатор с базовым именем X уже зарегистрирован, несмотря на то, что он не является
В моем приложении django
я использую DRF
и это дает мне , и это дает мне эту странную ошибку, когда я пытаюсь запустить приложение :
water_maps | router.register(r'breaches_edit_delete', api.BreacEditDeletehViewSet)
water_maps | File "/usr/local/lib/python3.10/dist-packages/rest_framework/routers.py", line 59, in register
water_maps | raise ImproperlyConfigured(msg)
water_maps | django.core.exceptions.ImproperlyConfigured: Router with basename "breach" is already registered. Please provide a unique basename for viewset "<class 'water_maps_dashboard.api.BreacEditDeletehViewSet'>"
несмотря на отсутствие дублирования и маршрутизаторов, вот мой URLS
файл :
api views
Это происходит потому, что оба ваших класса viewsets выполняют одну и ту же работу, также вы определяете метод для выполнения одной и той же работы.
Если вы используете ModelViewSet, то нет необходимости объявлять отдельные post, get, put, patch, delete методы класса представления. Приведенного ниже кода достаточно для всего. Но если вы хотите получить больше доступа и сделать что-то индивидуальное, то использование отдельных классов или функций будет предпочтительнее. Также вы можете настроить свой класс viewset для этих вещей. Но чтобы решить вашу проблему, сохраните следующий код и попробуйте.
api view
class BreachViewSet(viewsets.ModelViewSet):
"""ViewSet for the Breach class"""
queryset = models.Breach.objects.all()
serializer_class = serializers.BreachSerializer
permission_classes = [permissions.IsAuthenticated]
роутер
router.register("Breach", api.BreachViewSet)
Узнать больше о viewsets можно здесь