2017-07-19 50 views
0

我有一个控制器,其API只能在本地网络上访问,本地地址为10.0.1.7。当我在本地网络(http://127.0.0.1:8000/)上托管Django时,我能够成功发布到控制器API。但是,当我从外部托管网站(我们称之为www.djangolan.com)时,该帖子不会执行。我想知道是否有配置设置/权限的方法,以便当从站点www.djangolan.com发布帖子,同时将我的设备连接到LAN时,它可以执行。有没有办法使用Django python从托管网站发布到本地IP地址?

def user_created(request): 
    contents = {} 
    if request.method == 'POST': 
     form = PostForm(request.POST) 
     if form.is_valid(): 
      firstName = form.cleaned_data['firstName'] 
      lastName = form.cleaned_data['lastName'] 

      url = "http://adminname:[email protected]/api/" 

      fullName = lastName + " , " + firstName 

      createUserJSON = {"SetUser": 
       {"User": [{ 
        "Name": fullName, 
        "Description": "", 
        "Attribute": [ 
         { 
          "type": "", 
          "Name": "FirstName", 
          "Value": firstName 
         }, 
         { 
          "type": "", 
          "Name": "LastName", 
          "Value": lastName 
         } 
        ] 
       }] 
       } 
      } 
      r = requests.post(url,json=createUserJSON) 
    return render(request,'user_created.html',contents) 

回答

0

您使用的IP是私有IP或内部IP。它是一个只有你的私人网络,即你的局域网才知道的IP相关者。

当您在公有领域上托管该网站时,该API还需要托管在公共IP上。因此,您必须找出局域网的公共IP,并在从外部网络连接时使用该IP。

一个公共IP地址是分配给计算设备 允许通过Internet直接访问的地址。一个网络服务器,电子邮件 服务器和任何可以从互联网上直接访问的服务器设备都是 候选公共IP地址。一个公共IP地址是全局的 唯一的,并且只能分配给一个唯一的设备。

当一台计算机被分配了一个私有IP地址时,本地设备通过它的私有IP地址看到这台计算机。但是,居住在本地网络之外的设备不能直接通过 通过私有IP地址进行通信,而是使用您的路由器的公共IP地址 进行通信。

参考:https://www.iplocation.net/public-vs-private-ip-address

相关问题