Python:Django请求

Python:Django请求,python,django,web-services,ubuntu,Python,Django,Web Services,Ubuntu,我在VMware Player上托管Ubuntu,我正在使用eclipse neon、Pydev、Anaconda3与Django合作,在同一台机器(Ubuntu)上请求/响应运行良好,但当从我的windows向托管机器发送请求时,会发生以下情况: -请求已成功发送。 -没有收到答复 这是我的密码: 在Ubuntu上: -Django代码: @api_view(['GET', 'POST']) def PredictLocations(request): if request.metho

我在VMware Player上托管Ubuntu,我正在使用eclipse neon、Pydev、Anaconda3与Django合作,在同一台机器(Ubuntu)上请求/响应运行良好,但当从我的windows向托管机器发送请求时,会发生以下情况: -请求已成功发送。 -没有收到答复

这是我的密码:

在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)
-后请求:

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)
在Windows上:

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)

您认为问题出在哪里?

我怀疑这是因为您使用的是django的runserver,带有默认参数。问题很简单,很容易解决:默认情况下,djangos runserver绑定到环回接口,而不是您的LAN接口。它将只响应来自127.0.0.1的请求。但这不是问题,因为
runserver
允许您根据需要更改接口甚至端口

  • 使用
    ifconfig-a
    (让我们假设它是192.168.1.10)查找ubuntu机器的LAN ip
  • 直接绑定到它:
    /manage.py runserver 192.168.1.10:8000

现在,您可能需要在设置中更改允许的\u主机,但为了简化开发,只需使用通配符:
ALLOWED\u HOSTS=['*']
就足够了。

检查Django设置中的
ALLOWED\u HOSTS
。另外,您收到的状态代码和原因是什么?打印输出是什么(r.status\u代码,r.reason,r.text)没有输出!脚本只是等待响应!但在当地它起了作用。我还尝试了设置ALLOWED_HOSTS=['*'],不幸的是没有任何积极的结果!我照你说的做了,但是没有积极的结果,兄弟ifconfig-a=192.168.37.138-./manage.py runserver 192.168.1.10:8000-ALLOWED_HOSTS=['*']我完成了所有这些步骤,但服务器没有回答!在您的情况下,应该是
/manage.py runserver 192.168.37.138:8000
。我以
192.168.1.10
为例,不知道您的实际LAN ip。另外,请注意,我在这里假设您正确配置了VM网络。我更喜欢
网桥模式
连接,让你的虚拟机看起来就像局域网上的任何其他节点一样。是的,兄弟,当然/manage.py runserver 192.168.37.138:8000,但它不工作!我尝试了这两种连接,关闭了防火墙,但都没有效果