Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 138
1

Как скрыть некоторые функции из view в swagger?

24.03.2023, 17:38. Показов 842. Ответов 2

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Требуется написать документацию API. Начал копать инфу про swagger. Использую библиотеку drf_yasg, а именно декоратор @swagger_auto_schema. Хочу скрыть некоторые функции, чтобы не отображались в swagger ui. Прочитал, что у декоратора есть параметр exclude.

Пытаюсь использовать декоратор следующим образом:
Код
@swagger_auto_schema(methods=['get', 'post'], exclude=True)
@api_view(http_method_names=["GET", "POST"])
@permission_classes([IsAdminUser])  # ([IsAuthenticated])  ([AllowAny])
def registration_f(request: WSGIRequest) -> Response:...
Выдает ошибку, либо не скрывает в swagger ui.

Как скрыть некоторые функции из view в swagger?


Хочу понять как скрывать функции.

В settings.py ничего не добавлял. В основной urls.py добавил следующее:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
 
schema_view = get_schema_view(
   openapi.Info(
      title="Snippets API",
      default_version='v1',
      description="Test description",
      # terms_of_service="https://www.google.com/policies/terms/",
      # contact=openapi.Contact(email="contact@snippets.local"),
      license=openapi.License(name="BSD License"),
   ),
   # patterns=[path('api/', include('django_app.urls')), ],
   # excluded_paths=['/admin/', '/healthcheck/'],
   public=True,
   permission_classes=[permissions.AllowAny],
 
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'),
    ...
]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2023, 17:38
Ответы с готовыми решениями:

Как скрыть некоторые компоненты!
Напишите программу, которая отображала бы на первом этапе информацию о набираемом пароле, а на...

Как скрыть от PropertyGrid некоторые Event
как скрыть от PropertyGrid некоторые Event. Вот так к примеру я скрываю свойства: public...

Как скрыть некоторые материалы в категории?
Есть вот такая страничка: ССЫЛКА Необходимо сделать так, чтобы пункты &quot;Материал тест 1&quot; и...

Как скрыть некоторые категории из формы добавления новостей?
Приветствую, установлен хак (несколько форм добавление новостей), в связи с этим вопрос, как скрыть...

Как в производном классе скрыть некоторые свойства и методы базового?
Есть класс, производный от некого базового класса. Как в моем классе скрыть некоторые свойства и...

2
3564 / 2711 / 347
Регистрация: 11.03.2009
Сообщений: 6,239
24.03.2023, 18:04 2
https://buildmedia.readthedocs... f-yasg.pdf
You can prevent a view from being included in the Swagger view by setting its class-level swagger_schema attribute to None, or you can prevent an operation from being included by setting its auto_schema override to none
in @swagger_auto_schema:
Python
1
2
3
4
5
6
7
8
9
10
class UserList(APIView):
    swagger_schema = None
    # all methods of the UserList class will be excluded
...
# only the GET method will be shown in Swagger
@swagger_auto_schema(method='put', auto_schema=None)
@swagger_auto_schema(methods=['get'], ...)
@api_view(['GET', 'PUT'])
def user_detail(request, pk):
    pass
Добавлено через 2 минуты
И еще вариант https://github.com/marcgibbons... t-36422378
0
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 138
24.03.2023, 19:56  [ТС] 3
Попробовал сделать через auto_schema. Работает.
Вчера когда решение тоже нашел этот метод, но PyCharm ругался. Я подумал, что что-то не то. В следующий раз не смотря на PyCharm буду тестить.
Как скрыть некоторые функции из view в swagger?
0
24.03.2023, 19:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2023, 19:56
Помогаю со студенческими работами здесь

Несколько подчиненных отчетов - как можно некоторые скрыть/показать
Привет! Тут придумал себе головную боль: На главном отчете расположено несколько подчиненных...

BrowsableAttribute для обытий класса, как скрыть от PropertyGrid некоторые Event
здравствуйте, собственно интересует вопрос как скрыть от PropertyGrid некоторые Event, свойства я...

Некоторые недостатки View State
Объясните, пожалуйста, недостатки ViewState Затруднение хранения данных, которые не сможет...

Плавно уменьшать и скрыть View
Как можно реализовать похожее на это https://mzgreen.github.io/images/3/scrollingtoolbarandfab.gif...

Скрыть часть web view за экран
Всем доброго времени суток. Вот чем я озадачился намедни, к примеру возьмём сайт твиттера, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru