Отправка запроса от django на себя - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть проект Django, который содержит второе стороннее приложение Django. В одном из моих представлений мне нужно запросить представление из другого приложения (в том же проекте Django).

В настоящее время оно работает примерно так:

import requests
def my_view(request):
   data = requests.get('http://localhost/foo/bar').json()
   # mangle data
   return some_response

Is есть простой способ отправить запрос, не проходя весь путь через DNS и веб-сервер и просто go непосредственно в поле зрения другого приложения (в идеале, конечно, и через промежуточное ПО)

Ответы [ 2 ]

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

Вы можете использовать urllib, как показано ниже

import urllib, urllib3, urllib.request
            url = "http://abcd.com" # API URL
            postdata = urllib.parse.urlencode(values).encode("utf-8") 
            req = urllib.request.Request(url)

            with urllib.request.urlopen(req, data=postdata) as response:
                resp = response.read()
                print(resp)

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

A Django Функция просмотра принимает запрос и возвращает объект ответа. Нет причины, по которой представление не может вызвать другое представление путем создания запроса (или клонирования или передачи своего собственного) и интерпретации ответа. (c .f. Рамки тестирования).

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

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