Почему маршрут правильный, но все равно выдает ошибку 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
Мой вопрос был решен, спасибо
В вашем приложении 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')),
]