Django drf-Spectular - Можете ли вы исключить определенные пути?

У нас есть несколько API с разными версиями в urls.py, например

  • api / v1
  • api / v2
  • api / v3

. Мы хотим реализовать чванство с помощью drf-spectular, но мы хотим только предоставить доступ к конечным точкам api / v3.

Есть ли способ сделать это? Я не могу понять документацию.

Спасибо

4 ответа

Это работает для меня:

      def preprocessing_filter_spec(endpoints):
    filtered = []
    for (path, path_regex, method, callback) in endpoints:
        # Remove all but DRF API endpoints
        if path.startswith("/api/"):
            filtered.append((path, path_regex, method, callback))
    return filtered

В настройках:

      "PREPROCESSING_HOOKS": ["common.openapi.preprocessing_filter_spec"],

Вы также можете исключить его с помощью следующего:

      
    from drf_spectacular.utils import extend_schema
    ...
    
    @extend_schema(
        exclude=True
    )
    @api_view(['GET'])
    def my_view(request):
        # your code here

Или вы можете исключить весь набор представлений:

      
    @extend_schema_view(
        list=extend_schema(exclude=True),
        retrieve=extend_schema(exclude=True),
        create=extend_schema(exclude=True),
        update=extend_schema(exclude=True),
        partial_update=extend_schema(exclude=True),
        destroy=extend_schema(exclude=True)
    )

В деталях:

Создайте файл в том же каталоге, где находится settings.py. Допустим, имя файла — exclude_path.py.

1- Добавьте в exclude_path.py:
вот схема — это путь, который мы не хотим показывать в выводе документов.

      def custom_preprocessing_hook(endpoints):
   filtered = []
   for (path, path_regex, method, callback) in endpoints:
       if "schema" not in path:
           filtered.append((path, path_regex, method, callback))
   return filtered

2- настройки.py

      SPECTACULAR_SETTINGS = {
   'PREPROCESSING_HOOKS': ["djapi.excluded_path.custom_preprocessing_hook"]
}

Разобрался. Скопировал пользовательскую функцию перехвата предварительной обработки, изменил инструкцию pass, чтобы отфильтровать то, что мне не требовалось в конечных точках, затем сопоставил расположение файла и функции в моих впечатляющих настройках для предварительно обработанных перехватчиков.

Другие вопросы по тегам