Исключить URL из Django REST Swagger

У меня есть несколько URL-адресов, которые я хочу исключить из документации API REST. Я использую Django REST Swagger, и единственная документация, которую я могу найти ( https://github.com/marcgibbons/djangorestswagger ), на самом деле не говорит мне многого. В параметрах settings.py есть «exclude_namespaces» часть SWAGGER_SETTINGS, но нет никаких реальных объяснений или примеров использования этого.

Проще говоря, я хочу исключить любые URL-адреса из документов, которые начинаются со следующего:

/api/jobs/status/ /api/jobs/parameters/ 

Как я мог это сделать?

Заранее благодарим за любую помощь: P

    5 Solutions collect form web for “Исключить URL из Django REST Swagger”

    исключаемые пространства имен – это те, которые определены в вашем urls.py.

    Так, например, в вашем случае:

    urls.py:

     internal_apis = patterns('', url(r'^/api/jobs/status/',...), url(r'^/api/jobs/parameters/',...), ) urlpatterns = urlpatterns + patterns('', url(r'^', include(internal_apis, namespace="internal_apis")), ... ) 

    и в вашем settings.py:

     SWAGGER_SETTINGS = { "exclude_namespaces": ["internal_apis"], # List URL namespaces to ignore } 

    Это хорошо описано там

    Для всех тех, кто нашел вышеупомянутый ответ, не полезно: я думаю, что «exclude_namespaces» больше не работает в новых версиях django swagger. У меня была почти такая же проблема (я не хотел показывать свою внутреннюю apis в документации), и вышеупомянутое решение не сработало для меня. Я искал как час для решения и, наконец, нашел что-то полезное.

    Есть некоторые атрибуты, которые вы можете передать SchemaGenerator. Один из них – urlconf. Вы можете установить его как «yourproject.api.urls», и он получит только определенные там URL-адреса. Конечно, вы должны убедиться, что все URL-адреса, которые вы хотите исключить из документации api, там не включены.

    Я надеюсь, что хотя бы один человек нашел мой ответ полезным;).

    Проблема возникает, когда вы хотите иметь много urls.py, включенных в вашу документацию api. Я не знаю, что делать. Если кто-то придумает ответ на эту новую проблему – не стесняйтесь комментировать мой ответ. благодаря!

    Для новейшей версии drf-swagger вы можете дефилировать шаблоны url в генераторе схемы.

    Например: url_patterns = ( url(r'^api/v1/', include(router.urls, namespace='api')), ) generator = schemas.SchemaGenerator(title='Core API', patterns=url_patterns)

    Ответ Олы правильный. exclude_namespaces больше не поддерживается.

    Для более точного управления документацией создайте свой собственный вид схемы, используя представление на основе функций или классов. Это может быть полезно, если вы хотите создать документацию для определенных шаблонов URL или URL confs.

    В вашем views.py вы можете сделать следующее:

     from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.schemas import SchemaGenerator from rest_framework_swagger import renderers class SwaggerSchemaView(APIView): renderer_classes = [ renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer ] def get(self, request): generator = SchemaGenerator(title='Your API Documentation', urlconf='your_app.urls') schema = generator.get_schema(request=request) return Response(schema) 

    Вышеупомянутая документация будет отображаться только для URL-адресов, указанных в аргументе urlconf для SchemaGenerator . Кроме того, не забудьте также настроить свой urls.py :

     from django.conf.urls import url from views import SwaggerSchemaView urlpatterns = [ url(r'^api/v1/docs/$', SwaggerSchemaView.as_view(), name='docs'), ] 

    С новой версией django swagger нам не нужно создавать представление, чтобы исключить некоторые URL-адреса. Ниже код отключит URL-адрес test2.

     from rest_framework_swagger.views import get_swagger_view urlpatterns1 = [ url(r'^', include(router.urls)), url(r'^test/', include('test.urls')), url(r'^test1/', Test2.as_view()), ] schema_view = get_swagger_view(title='API Documentation', patterns=urlpatterns1) urlpatterns = urlpatterns1 + [ url(r'^docs/', schema_view), url(r'^test2/', Test2.as_view()), ] 
    Python - лучший язык программирования в мире.