Динамическая c строка документа для конечной точки платформы Django REST - PullRequest
2 голосов
/ 25 февраля 2020

У меня есть представление / конечная точка на основе класса Django -REST-framework, которое выглядит следующим образом:

from rest_framework.generics import RetrieveUpdateAPIView
from .serializers import ViewSerializer

INPUT_FORMAT = {
    "input1": [9, 23, 55],
    "input2": "string",
    "input3": "boolean",
}

class View(RetrieveUpdateAPIView):
    """
    Docstring describing the endpoint.
    Would like to integrate the content of INPUT_FORMAT here.
    """
    serializer_class = ViewSerializer

    def get_object(self):
        # blahblah
        pass

Я хотел бы интегрировать константу INPUT_FORMAT в строку документации, поскольку она используется в нескольких местах в коде. Я пробовал это и это , но безуспешно. Возможно ли это?

1 Ответ

0 голосов
/ 26 февраля 2020

Вам не нужны никакие знания DRF, я думаю, что это больше для понимания того, как классы работают в Python и как работает наследование классов, и как классы могут быть инициализированы и как атрибуты могут быть установлены с помощью __init__() функция. Однако, как говорится:

На мой взгляд, такое использование строк документации было бы неожиданным.

Строки документации используются, чтобы объяснить, что делает объект, объяснить его параметры или предложить использование объекта.

В вашем случае вы говорите что-то о выполнении вашей функции, а не о том, как она это делает. работает, поэтому я не буду создавать его динамически.

Гораздо лучше держать документацию ясной и краткой.

Я бы также сослался здесь: Стигульный справочник Google: Комментарии и строки документации

Единственный способ увидеть, как это делается, заключается в следующем:

Обезьяна исправляет функцию help(). Но ... просто скажите "нет" исправлениям обезьян.

Или, создание динамической c строки документа:

from rest_framework.generics import RetrieveUpdateAPIView
from .serializers import ViewSerializer

INPUT_FORMAT = {
    "input1": [9, 23, 55],
    "input2": "string",
    "input3": "boolean",
}

class View(RetrieveUpdateAPIView):
    """
    Docstring describing the endpoint.
    Would like to integrate the content of {input_1} here.
    Would like to integrate the content of {input_2} here.
    Would like to integrate the content of {input_3} here.
    """.format(**INPUT_FORMAT)
    serializer_class = ViewSerializer

    def get_object(self):
        # blahblah
        pass

Однако приведенное выше решение не работает для help(). И может быть доступно только через атрибут View.__doc__. И поэтому, как уже говорилось, не было бы идиоматического c или стандартного Python кода.

Я думаю, что хотя вы и считаете это хорошей идеей, подумайте о том, сколько времени вы потенциально потратили на попытки выяснить создать динамическую строку документации c. Стоило ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...