@Aaltq

Почему GET перекрывает POST?

Есть два метода:
@api_view(["GET"])
def get_data(request):
    pass

@api_view(["POST"])
def post_data(request):
    pass


URL должен был одинаков, т.е. выглядят так:
from . import views

urlpatterns = [
    path('api/', views.get_data),
    path('api/', views.post_data),
]


Делаю POST запрос curl-ом и получаю {"detail":"Method \"POST\" not allowed."}. Если убрать GET, то тогда все нормально. Если поднять POST над GET, то будет замещаться уже GET. Если объединить методы и проверять полученный через request, то тоже все работает.

Как сохранить URL, раздельные методы, но при этом чтобы они друг друга не перекрывали?
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler
бекенд-разработчик на python
Django маршрутизирует запросы без учёта методов, поэтому первый ресурс обслуживает и post тоже. Отсюда и 405 ошибка.

Используйте cbv и viewsets
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы