но на http://localhost: 8000 / api / отображаются только профили
Это ожидаемое поведение. Django возвращает первый соответствующий путь из вашего файла конфигурации URL, который в вашем случае является модулем профилей. Ваши повторяющиеся пути api/
игнорируются.
Если вы действительно хотите, чтобы все было в /api
, вам нужно будет определить все ваши URL-адреса в базовом файле urls.py
. Однако я настоятельно рекомендую вам сохранить текущую структуру и добавить имя модуля к вашим конечным точкам:
urlpatterns = [
path('docs/', schema_view.with_ui('swagger',
cache_timeout=0), name='schema-swagger-ui'),
path('admin/', admin.site.urls),
path('api/profiles/', include('profiles.urls')),
path('api/posts/', include('posts.urls')),
path('api/comments/', include('comments.urls')),
path('api/private_messages/', include('private_messages.urls')),
]
В противном случае ваш urls.py
файл может очень быстро испортиться по мере роста вашего проекта.
Если вас беспокоит такой маршрут, как localhost:8000/api/posts/posts
, вам следует изменить конфигурацию URL-адреса в приложении posts
. Что-то вроде этого, вероятно, подойдет вам лучше:
from django.urls import path
from .views import PostViewSet, PostByAuthorViewSet
urlpatterns = [
path('by-author/<author_id>', PostByAuthorViewSet.as_view()),
path('', PostViewSet.as_view())
]
Таким образом, у вас будут маршруты localhost:8000/api/posts/
и localhost:8000/api/posts/by-author/1
. В качестве побочного примечания вам, вероятно, следует изучить фильтры , поскольку posts-by-authors
звучит как набор просмотра, который можно легко включить в ваш PostViewSet
с параметром запроса.