ОТПРАВИТЬ запрос на localhost с помощью запросов Python

#python #python-3.x #django #python-requests

#python #python-3.x #django #python-запросы

Вопрос:

У меня есть мой веб-сайт Django, работающий на моем локальном сервере на порту 8000. Из отдельного файла python я хочу отправить post-запрос, запускающий одну конечную точку моего веб-сайта.

Но это невозможно сделать даже после добавления всей необходимой информации. Пожалуйста, помогите!!

 import requests
URL = 'http://127.0.0.1:8000/api/org/create/'
client = requests.Session()
client.get(URL)
csrftoken = client.cookies['csrftoken']

data = dict(csrfmiddlewaretoken=csrftoken)
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
response = client.post(URL, data=data,cookies=client.cookies, headers=headers)
print(response.status_code)
  

Это выдает мне эту ошибку.

 EC:Program FilesPython37libunittestcase.py:643: ResourceWarning: unclosed <socket.socket fd=420, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 10510), raddr=('127.0.0
.1', 8000)>
  outcome.errors.clear()

======================================================================
ERROR: test_org_create (test_org.TestOrg)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_org.py", line 13, in test_org_create
    csrftoken = client.cookies['csrftoken']
  File "venvlibsite-packagesrequestscookies.py", line 328, in __getitem__
    return self._find_no_duplicates(name)
  File "venvlibsite-packagesrequestscookies.py", line 399, in _find_no_duplicates
    raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
KeyError: "name='csrftoken', domain=None, path=None"

  

Как это решить?
Пожалуйста, прокомментируйте любую другую информацию.

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

1. Почему вы хотите использовать requests module здесь?

2. Что еще я могу использовать? На самом деле я пишу модульный тест для своего Rest API и записываю тесты в отдельный тестовый файл. Есть еще идеи?

3. Как насчет тестового клиента Django ?

4. На самом деле, я не могу использовать это, поскольку для этого требуются зависимости, такие как database engine, и я использую Dynamo DB извне. Вот почему я написал отдельный тестовый файл для тестирования своего веб-сайта. Многие люди сталкивались с одной и той же проблемой. Как отправить post-запрос на мой локальный сервер?

Ответ №1:

Итак, рассмотрим документы об ошибке и запросах из следующего раздела:

 def _find_no_duplicates(self, name, domain=None, path=None):
        """Both ``__get_item__`` and ``get`` call this function: it's never
        used elsewhere in Requests.

       ... blah blah ignore this, alot of stuff

        :raises KeyError: if cookie is not found
     
       ... blah blah also ignore this, another lot of stuff
  

:raises KeyError: if cookie is not found Кажется, что вам не хватает файла cookie. Вы проверили, правильно ли он задан в ответе, как вы предполагали?

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

1. Хотя я добавил файлы cookie, но проверю, соответствуют ли они требованиям.