Как вызвать django представление на основе класса получить функцию из обычной функции? - PullRequest
1 голос
/ 06 февраля 2020

Я хочу получить ответ о наличии функции в представлении на основе классов. Поэтому я написал небольшую функцию за пределами класса. Как передать URL этой функции get или как вызвать эту функцию напрямую, чтобы получить ответ? Функция извлечет значение из шаблона и должна передать значение извлеченного параметра, чтобы получить функцию внутри Get_data. В настоящее время класс Get_data служит для непосредственного получения значений из вызываемого URL-адреса и предоставления ответа json, и я хочу расширить его функциональность, где я хочу получить значение из шаблона и передать его этой функции Get_data и получить ее ответ.

Пример кода:

class Get_data(APIView):

   def get(self, request):
       username = request.GET.get('username')
       # Processing Code #

       response_data = {'status': 'SUCCESS',
                     'data': XYZ}
       return Response(response_data, status=status.HTTP_200_OK)

def fetch_value():
    # Code to get response data from GET function of class Get_data by passing GET parameter value

#

Итак, каким должен быть код внутри функции fetch_value для передачи значения, извлеченного из шаблона, и получения данных ответа из функции GET класса get_data

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вы можете использовать .as_view(), а затем «отправить» запрос:

def fetch_value(request):
    response = Get_data.as_view()<b>(request)</b>
    # &hellip;

Это вернет HttpResponse объект [Django -doc ] , который вы затем можете проверить, например, его атрибут .content [Django -doc] .

Как говорится, почему не Вы просто добавляете результат Get_data.as_view() в urls.py? Обработка ответа часто не является хорошей идеей, так как большая часть «контекста» уже потеряна.

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

Вы можете использовать следующий код:

from rest_framework.request import HttpRequest, Request


def fetch_value():
    obj = Get_data()
    # make http request object
    http_request_obj = HttpRequest()
    # make http request object
    request = Request(http_request_obj)
    query_output_data = obj.get(request)
...