2013-05-31 4 views
1

Привет, поэтому у меня есть этот метод в представлениях django, чтобы отправить файл на другой сервер. Я получаю сообщение об ошибке HTTP 415 о типе носителя запроса. Я отладил запрос и скопировал его содержимое в скрипачье. Когда я отправил то же самое от скрипача, это сработало. Поэтому я не понимаю, почему он не работает с использованием пакета запросов python.Как отправить запрос django на внешний сервер

Может ли кто-нибудь помочь мне с этим?

Спасибо.

def upload(request): 
    if request.method == 'POST': 
     url=settings.WEBSERVICES_URL+'validate' 
     r = requests.post('http://localhost:9090/validate',data=request) 
     r2 = requests.get('http://localhost:9090/test') 
     return render_to_response("upload.html", context_instance=RequestContext(request)) 
    else: 
     return render_to_response("upload.html", context_instance=RequestContext(request)) 

ответ

0

Если вы посмотрите на documentation of requests это говорит о data ключевого слова:

данные - (необязательный) словарь, байт, или файл-подобный объект для отправки в теле запроса ,

request объект Джанго является экземпляром HttpRequest .Вы должны попытаться поставить необходимые данные в словаре и передать его в post().

3

ли это:

r = requests.post('http://localhost:9090/validate', data=request.POST) 

Вы передаете полный django.http.HttpRequest объект requests.post, когда вам нужно только свои почтовые данные.

+0

Привет, благодарю вас за ответ. Проблема в том, что URL-адрес POST, который является localhost: 8000, не заменяется при вызове request.post. Поскольку форма отправляется на localhost: 8000/upload изначально, чтобы достичь способа загрузки в представлениях, URL-адрес POST неверен. Я бы ожидал, что запросы будут заменять его, но он не –

Смежные вопросы