I have a util method in Python Django project:
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`
Run Code Online (Sandbox Code Playgroud)
I want to add my server domain or ip in the front of it, like:
http://www.example.com:8000/media/images/users/head_img/blob_NOawLs1
Run Code Online (Sandbox Code Playgroud)
How to get current server ip( or domain )?
EDIT
I am not going to get the remote ip, I just want to get the server ip. I mean, I write the Django as backend server, when it is running, how can I get the server ip? or domain.
Pao*_*fan 11
You can get the hostname from the request like this (docs):
request.get_host()
Run Code Online (Sandbox Code Playgroud)
and the remote IP of the client like this (docs):
request.META['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)
To get the server IP is a bit tricky, as shown in this SO answer, which gives this solution:
import socket
# one or both the following will work depending on your scenario
socket.gethostbyname(socket.gethostname())
socket.gethostbyname(socket.getfqdn())
Run Code Online (Sandbox Code Playgroud)