2017-04-10 4 views
1

私はVMware PlayerでUbuntuをホストしています。私はEclipseネオン、Pydev、Anaconda3を使ってDjangoを使っています。要求/応答は同じマシン(Ubuntu)でうまくいきました。ホストされたマシンの私のウィンドウは次のようになります: - 要求は正常に送信されました。 - 応答を受信しませんでした。ここでPython:Django Requests

は私のコードです:Ubuntuで

-Djangoコード:

@api_view(['GET', 'POST']) 
def PredictLocations(request): 

if request.method == 'GET': 
    locations = Locations.objects.all() 
    serilaizer = LocationSerializers(locations, many=True) 
    return Response(serilaizer.data) 

elif request.method == 'POST': 
    serializer = LocationSerializers(data=request.data) 
    if serializer.is_valid(): 


     return HttpResponse('Hey') 
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

- ポスト要求:Windowsでは

import requests,json 

url = 'http://localhost:8000/locations/' 

payload = {"X": 1.0, "Y": 0.0, "Z": 10.0, "isSafe": 2} 

headers = {'content-type': 'application/json'} 

r = requests.post(url, data=json.dumps(payload), headers=headers) 

print(r.status_code, r.reason, r.text) 

import requests,json 

url = 'http://UbuntuIp:8000/locations/' 

payload = {"X": 1.0, "Y": 0.0, "Z": 10.0, "isSafe": 2} 

headers = {'content-type': 'application/json'} 

r = requests.post(url, data=json.dumps(payload), headers=headers) 

print(r.status_code, r.reason, r.text) 

問題は何と思いますか?

+0

Djangoの設定で 'ALLOWED_HOSTS'を確認してください。また、ステータスコードと理由は何ですか? –

+0

printの出力は何ですか(r.status_code、r.reason、r.text) – rrmerugu

+0

出力はありません!スクリプトは応答を待つだけです!しかし、それはローカルに働いた。 私はまた、ALLOWED_HOSTS = ['*']を設定しようとしましたが残念なことに肯定的な結果はありません! –

答えて

1

これは、あなたがdjangoのrunserverをデフォルトのパラメータで使用しているためです。問題は単純で解決しやすいです:djangos runserverは、LANインタフェースではなく、デフォルトでループバックインタフェースにバインドされています。 127.0.0.1からの要求にのみ応答します。しかし、それは問題ではありません。runserverでは、必要に応じてインターフェイスやポートを変更することができます。

  • (のは、それが192.168.1.10だふりをしましょう)ifconfig -aで直接へ
  • バインドあなたのUbuntuマシンのLANのIPを探す:今、あなたの設定でALLOWED_HOSTSを変更する必要があり./manage.py runserver 192.168.1.10:8000

を、開発の簡素化のために、ワイルドカード:ALLOWED_HOSTS = ['*']を使用するだけで十分でしょう。

+0

私はあなたが言ったことをしましたが、肯定的な結果はありませんでした! - ifconfig -a = 192.168.37.138 - ./manage.py runserver 192.168.1.10:8000 - ALLOWED_HOSTS = ['*'] 私はこれらすべての手順を実行しましたが、サーバーからの回答はありませんでした。 –

+0

あなたの場合、 './manage.py runserver 192.168.37.138:8000'にする必要があります。私はあなたの実際のLANのIPを知らずに、例として '192.168.1.10'を使っていました。 – smassey

+0

また、ここでは、VMネットワークを正しく設定したと仮定しています。私はあなたのVMをあなたのLAN上の他のノードのように見せかける 'ブリッジモード'接続を好むでしょう。 – smassey