Почему DRF дает мне 404

Я продолжаю получать 404 в DRF всякий раз, когда я отправляю запрос из postman, даже если url корректен.

urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('backend.urls'))
]

backend/urls.py

from django.urls import path, include
from . import views
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register('/post', views.PostView, basename='post')

urlpatterns = [
    path('', include(router.urls)),
]

Из postman я отправляю post запрос на конечную точку http://127.0.0.1:8000/post, но продолжаю получать ошибку 404 not found. Что я делаю не так?

Попробуйте изменить backend/urls.py:

import views
from django.urls import path, include
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register('post', views.PostView, basename='post')

urlpatterns = router.urls

Вот что работает для меня.

  • Создайте приложение с именем backend, используя python manage.py startapp {app_name}, где app_name - backend

  • Добавьте вновь созданное приложение к INSTALLED_APPS в файле settings.py вашего проекта

    .
  • В файле url.py вашего проекта сделайте следующее:

           from django.contrib import admin
           from django.urls import include, path
           urlpatterns = [
              path('admin/', admin.site.urls),
              path("", include("backend.urls")),
           ] 
    
    
  • В файле urls.py вашего приложения. (где app - это бэкенд):

        from django.urls import include, path
        from rest_framework.routers import DefaultRouter
    
        from . import views
    
        router = DefaultRouter()
        router.register('post', views.PostView, basename='post')
    
        app_name = 'backend'
    
        urlpatterns = [
            path('', include(router.urls)),
        ]
    
  • Затем в вашем app(backend) views.py определите PostView

    .

Это должно сработать. Конечная точка должна находиться по адресу : http://localhost:8000/post/ .

если вы используете порт 8000

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