有没有办法使用Django python从托管站点发布到本地IP地址?

时间:2017-07-19 18:19:24

标签: python django lan

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

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:password@10.0.1.7/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)

1 个答案:

答案 0 :(得分:0)

您使用的IP是私有或内部IP。它是您的专用网络(即您的LAN)所知的IP相对。

当您在公共域上托管网站时,API也需要托管在公共IP上。因此,您必须弄清楚LAN的公共IP,并在从外部网络连接时使用该IP。

  

公共IP地址是分配给计算的地址   设备允许通过Internet直接访问。一个Web服务器,电子邮件   服务器和可从Internet直接访问的任何服务器设备   公共IP地址的候选人。公共IP地址是全球的   唯一的,只能分配给一个独特的设备。

     

如果为计算机分配了私有IP地址,则为本地   设备通过它的私有IP地址查看此计算机。然而   驻留在本地网络之外的设备不能直接使用   通过私有IP地址进行通信,但使用路由器的公共信息   要通信的IP地址。

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