有IP客户端地址

时间:2014-07-18 11:22:26

标签: python html sockets url

我正在使用html和python(我是python中的新手)的页面,我想拥有IP客户端地址,但我不知道是否可能。我看到它可以使用PHP语言。

所以,我在命令行中执行我的代码(使用Linux):

./code.py client_server app_name app_version

infos.py

def main( client_server, app_name, app_version):
  template = open('infoHTML.py').read()
  c = string.Template(template).substitute(
            app_name = app_name,
            app_version = app_version,
            os = user,
            user = login)      
  f = tempfile.NamedTemporaryFile(prefix='/tmp/info.html', mode='w', delete=False)
  f.write(contenu)
  f.close()
  webbrowser.open(f.name)

if __name__ == "__main__":
  client_server = sys.argv[1]
  app_name = sys.argv[2]
  app_version = sys.argv[3]

  user = sys.platform
  sys.argv.append(user)

  login = getpass.getuser()
  sys.argv.append(login)

  main(client_server, app_name, app_version)

我在这里有一个html代码到python代码: infoHTML.py

<html>
App: ${app_name}<br/><br/>
Version: ${app_version}<br/><br/>
User: ${user}<br/><br/>
<form name="sendData" method="get" action="http://localhost:8000/cgi/display.py">
    Project: <input type="text" name="pro"><br/><br/>
    Number: <input type="text" name="num"/><br/><br/>
    <input type="submit" value="OK"/>
</form>
</body>
</html> 

1 个答案:

答案 0 :(得分:0)

这是可能的。您需要通过在响应主体上呈现地址或在已经呈现响应后使用ajax请求它来执行此操作。

如果没有看到您正在使用的Web服务器,很难为您提供代码解决方案,但这里有一些针对第一种方法的指针。要获取地址,请在服务器端(python处理程序):

import socket
ip = socket.gethostbyname(socket.gethostname())

或者如果您使用的是Google App Engine:

ip = self.request.remote_addr
然后,您应该将IP写入响应。例如,如果您使用模板引擎来呈现HTML,那么您的HTML可能看起来像这样:

<html>
<script>
var ip = {{ip}}
</script>

并且在渲染模板的python代码上你应该做类似的事情:

htmlContent = template.render(ip=ip)
self.response.write(htmlContent)