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

#django #swagger #drf-spectacular #exclude

Вопрос:

У нас есть куча api с разными версиями в urls.py, например

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

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

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

Спасибо

Комментарии:

1. кажется, в drf-yasg есть способ с помощью «шаблонов» get_schema_view. Я не думаю, что это переведено на drf-впечатляюще.

Ответ №1:

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

Ответ №2:

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

 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"],