Запросы Python и ошибка 404 с Django/tasty-pie
-
12-12-2019 - |
Вопрос
У меня есть приложение Django, которое обслуживает RESTful API с использованием вкусного пирога.
Я использую разработку Django runserver
тестировать.
Когда я получаю к нему доступ через браузер, он работает нормально, и использование Curl также работает нормально:
curl "http://localhost:8000/api/v1/host/?name__regex=&format=json"
На консоли с сервером запуска вижу:
[02/Oct/2012 17:24:20] "GET /api/v1/host/?name__regex=&format=json HTTP/1.1" 200 2845
Однако, когда я пытаюсь использовать модуль запросов Python (http://docs.python-requests.org/en/latest/), на выходе я получаю 404:
>>> r = requests.get('http://localhost:8000/api/v1/host/?name__regex=&format=json')
>>> r
<Response [404]>
или:
>>> r = requests.get('http://localhost:8000/api/v1/host/?name__regex=&format=json')
>>> r
<Response [404]>
Кроме того, на консоли сервера запуска Django я вижу:
[02/Oct/2012 17:25:01] "GET http://localhost:8000/api/v1/host/?name__regex=&format=json HTTP/1.1" 404 161072
По какой-то причине, когда я использую запросы, он распечатывает весь URL-адрес запроса, включая localhost, но не когда я использую браузер или завиваюсь.
Я предполагаю, что это как-то связано с кодировкой, пользовательским агентом или типом отправляемого запроса?
Решение
Я не очень знаком с запросами, но думаю, что ваша идея кодирования может быть верной.То есть запросы могут как-то обрабатывать URL-адрес?Возможно, вместо того, чтобы передавать все в URL напрямую, попробуйте сделать то, что Запрашивает документы предлагать:
request_params = { 'name_regex' : '', 'format' : 'json' }
r = requests.get( 'http://localhost:8000/api/v1/host/', params = request_params )