'Why DRF giving me 404
I am keep getting 404 in DRF whenever I send request from postman even though the url is correct.
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)),
]
From postman I am sending post request on the endpoint http://127.0.0.1:8000/post but I am keep getting 404 not found error. What am I doing wrong?
Solution 1:[1]
This is what works for me.
Create a app named
backendusingpython manage.py startapp {app_name}where app_name isbackendAdd the newly created app to
INSTALLED_APPSin your project settings.pyIn your project url.py file do this:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path("", include("backend.urls")), ]In your app urls.py file. (where app is backend):
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)), ]Then in your app(backend) views.py define
PostView
This should work.The endpoint should be at :
http://localhost:8000/post/ .
if your using port 8000
Solution 2:[2]
Try to change 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
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Oluwatomisin Omotosho James |
| Solution 2 | RedWheelbarrow |
