Drf_yasg.generators: компонент path базового URL api http://localhost:8080/ игнорируется; вместо него используйте FORCE_SCRIPT_NAME

Я использую swagger (drf_yasg.generators) с Django и получаю следующее сообщение об ошибке

Сообщение об ошибке

drf_yasg.generators: компонент пути базового URL api http://localhost:8080/ игнорируется; вместо него используйте FORCE_SCRIPT_NAME

.

Вот это развязность

class SchemaGenerator(OpenAPISchemaGenerator):
    def get_schema(self, request=None, public=False):
        schema = super(SchemaGenerator, self).get_schema(request, public)
        schema.basePath = os.path.join(schema.basePath, "")
        return schema


if env.bool("DJANGO_DEBUG"):
    schema_view = get_schema_view(
        openapi.Info(
            title="API",
            default_version="v1",
            description="API endpoints",
        ),
        url="http://localhost:8080/",
        public=True,
        permission_classes=(permissions.AllowAny,),
        urlconf="config.urls",
        generator_class=SchemaGenerator,
    )

Здесь URL

urlpatterns = [
    path(settings.ADMIN_URL, admin.site.urls),
    path("api/", schema_view.with_ui("swagger", cache_timeout=0), name="swagger"),
    path("algo1/", include("core_functions.algo1.urls")),
]

Может кто-нибудь помочь с ошибкой?

Похоже, что вы используете неправильную конфигурацию url в schema_view. Пожалуйста, попробуйте использовать обычную конфигурацию Django url, удалив настройку поля url, как показано ниже:

from django.urls import re_path
from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from rest_framework import permissions

schema_view = get_schema_view(
    openapi.Info(
        title='API',
        default_version='v1',
        description='API endpoints',
        terms_of_service='',
        contact=openapi.Contact(email='your@email.here'),
        license=openapi.License(name="[Add License Name Here]"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

swagger_urlpatterns = (
    re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
)

и затем добавьте следующее в конце вашего urls.py:

# ...
urlpatterns += swagger_urlpatterns

Я также предлагаю избегать создания пользовательских generator_class в schema_view, если это не является настоятельной необходимостью

Вернуться на верх