Python:Django请求
我在VMware Player上托管Ubuntu,我正在使用eclipse neon、Pydev、Anaconda3与Django合作,在同一台机器(Ubuntu)上请求/响应运行良好,但当从我的windows向托管机器发送请求时,会发生以下情况: -请求已成功发送。 -没有收到答复 这是我的密码: 在Ubuntu上: -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
@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
允许您根据需要更改接口甚至端口
- 使用
(让我们假设它是192.168.1.10)查找ubuntu机器的LAN ipifconfig-a
- 直接绑定到它:
/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,但它不工作!我尝试了这两种连接,关闭了防火墙,但都没有效果