drf_yasg с проблемой аргумента ключевого слова patterns

#python #django #django-rest-framework #swagger #drf-yasg

#питон #джанго #django-rest-фреймворк #развязность #drf-yasg

Вопрос:

В моем проекте у меня есть конечные точки api/v1, которые я хочу показать в виде отдельной схемы. Проблема в том, что использование дополнительного schema_view с шаблонами URL api/v1 уничтожает префикс маршрутизатора. Как я могу его сохранить? Вот код для urls.py основного приложения и скриншоты приведенных чванств:

кодекс action_fm/urls.py (основное применение)

 from django.contrib import admin from django.urls import include, path from drf_yasg import openapi from drf_yasg.views import get_schema_view from rest_framework import permissions  from action.urls import notify_router from action_fm.views import HealthView, api_root  api_v1_urlpatterns = [  path("", include([path("", include(notify_router.urls))])), ]   schema_view = get_schema_view(  openapi.Info(title="Action FM Swagger", default_version="v1", description="API description for Action FM"),  public=True,  permission_classes=(permissions.AllowAny,),  patterns=api_v1_urlpatterns, )  schema_view_common = get_schema_view(  openapi.Info(title="Action FM Swagger", default_version="v1", description="API description for Action FM"),  public=True,  permission_classes=(permissions.AllowAny,), )  urlpatterns = [  path("api/v1/", include(api_v1_urlpatterns)),  path("", include("django.contrib.auth.urls")),  path("", api_root),  path("api-auth", include("rest_framework.urls", namespace="rest_framework")),  path("health", HealthView.as_view(), name="health"),  path(  "swagger/v1", schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui-v1"  ), # for correct logically separated api endpoints to try  path("swagger/common", schema_view_common.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui-common"),  path("grappelli/", include("grappelli.urls")),  path("admin/", admin.site.urls), ]  

кодекс action/urls.py (другое приложение, здесь я храню свой маршрутизатор)

 from rest_framework import routers  from action.views import NotificationHandlerViewSet  notify_router = routers.DefaultRouter(trailing_slash=True) notify_router.register(r"notify", NotificationHandlerViewSet, basename="notify")  

вот скриншот правильного общего чванства, которое сохраняет префикс «уведомлять/» в URL

а вот неверный чванливый api/v1, который потерял необходимый префикс «уведомлять» (((

Ответ №1:

Похоже, что drf_yasg не теряет префикс «уведомлять», он просто сохранен как базовый путь в схеме swagger, поэтому, если я добавлю другой URL-адрес в urlconf api v1, все префиксы будут отображаться правильно