Skip to main content
 首页 » 编程设计

python之在 Django 中获取当前服务器 ip 或域

2024年08月16日33davidwang456

我在 Python Django 项目中有一个 util 方法:

def getUserInfo(request): 
 
    user = request.user 
    user_dict = model_to_dict(user) 
    user_dict.pop("password") 
    user_dict.pop("is_superuser") 
    user_dict["head_img"] = user.head_img.url # there is `/media/images/users/head_img/blob_NOawLs1` 

我想在前面加上我的服务器域名或者ip,比如:

http://www.example.com:8000/media/images/users/head_img/blob_NOawLs1 

如何获取当前服务器的ip(或域名)?


编辑

我不打算获取远程ip,我只想获取服务器ip。我的意思是,我将 Django 编写为后端服务器,当它运行时,如何获取服务器 ip?或域名。

请您参考如下方法:

您可以像这样从请求中获取主机名 (docs):

request.get_host() 

和客户端的远程 IP(docs):

request.META['REMOTE_ADDR'] 

获取服务器 IP有点棘手,如this SO answer所示, 这给出了这个解决方案:

import socket 
# one or both the following will work depending on your scenario 
socket.gethostbyname(socket.gethostname()) 
socket.gethostbyname(socket.getfqdn())