Почему маршрут правильный, но все равно выдает ошибку 404 на Django

Я получил ошибку 404 на своем сайте при доступе к правильному маршруту, сделал ли я что-то неправильно

urls.py обрабатывает основной маршрут

from django.contrib import admin
from django.urls import path,include,re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'api/facebook/(.+?)', include('apifacebooks.urls')),
    path('', include('app.urls')),
    path('getcookie', include('app.urls')),
    path('change-lang', include('app.urls')),
    re_path(r'auth/(.+?)', include('app.urls')),
]

urls.py обрабатывает маршруты в приложении apifacebooks

from django.urls import path
from . import views

urlpatterns = [
    path('api/facebook/like-post',views.like_post)
]

А когда я перехожу на http://localhost:8000/api/facebook/like-post, я получаю ошибку 404

Ошибка изображения 404

Мой вопрос был решен, спасибо

В вашем приложении apifacebooks измените путь, потому что у вас был двойной "api..." в пути


from django.urls import path
from . import views

urlpatterns = [
    path('like-post/',views.like_post)
]

А в корне urls.py просто

path('api/facebook/', ....)

В вашем коде шаблон url будет "http://localhost:8000/api/facebook/api/facebook/like-post". Как объясняет id Django docs:

Когда Django встречает include(), он отрезает любую часть URL, которая соответствует этому моменту, и отправляет оставшуюся строку. URL до этого момента и отправляет оставшуюся строку в включенный URLconf для дальнейшей обработки.

Удалите "api/facebook/" в "apifacebooks.urls", например:

Главный urls.py

from django.contrib import admin
from django.urls import path,include,re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'api/facebook/(.+?)/', include('apifacebooks.urls')),
    path('', include('app.urls')),
    path('getcookie', include('app.urls')),
    path('change-lang', include('app.urls')),
    re_path(r'auth/(.+?)', include('app.urls')),
]

apifacebooks.urls

from django.urls import path
from . import views

urlpatterns = [
    path('like-post',views.like_post)
]

Или вы можете попытаться разместить удаление "r'api/facebook/(.+?)'", например:

from django.contrib import admin
from django.urls import path,include,re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('apifacebooks.urls')),
    path('', include('app.urls')),
    path('getcookie', include('app.urls')),
    path('change-lang', include('app.urls')),
    re_path(r'auth/(.+?)', include('app.urls')),
]
Вернуться на верх