2016-03-31 11 views
1

ich eine http Anforderung an einen anderen Server in meinem django view wie folgt senden möchten:Wie schicke ich eine Anfrage an einen anderen Server in einer Django-Ansicht?

def django_view(request): 
    response = send_request('http://example.com') 
    result = do_something_with_response(response) 
    return HttpResponse(result) 

Wie kann ich das tun?

+0

Sie suchen wahrscheinlich nach dem Falschen. Das "j" in "ajax" steht für JavaScript. Wenn Sie in Python eine asynchrone Anfrage stellen möchten, um Ihre Ansicht zu ändern, müssten Sie eine Art Web-Socket-Sache implementieren, um den Browser zu aktualisieren, wenn die Anfrage trotzdem abgeschlossen wurde. Für so etwas müssen Sie es wahrscheinlich nur in JS als jQuery ajax Anfrage oder etwas schreiben – paulski

+0

@pdom: yeah, ich habe eigentlich eine HttpRequest nead. Vielen Dank. – Navid777

Antwort

3

Sie können die Bibliothek python requests verwenden, um die Anfrage zu senden und die Antwort zu erhalten. Aber Sie müssen die Antwort für Ihre Bedürfnisse formatieren. Hier

ist ein Beispiel für GET Anfrage:

import requests 

def django_view(request): 
    # get the response from the URL 
    response = requests.get('http://example.com') 
    result = do_something_with_response(response) 
    return HttpResponse(result) 

Der einzige Nachteil ist, dass, wenn man es hier zu tun wird es nicht ajax (Asynchronous JavaScript and XML) mehr sein. Die Alternative wäre, dass Sie Ihre Webseite normal aus der django-Ansicht laden und dann alle AJAX-Anfragen in Javascript ausführen - die Antwort weiterverarbeiten und auf der Seite rendern.

Verwandte Themen