martes, 18 de marzo de 2008

Cómo obtener dirección IP en Django

Fácil, usar el objeto request: request.META['REMOTE_ADDR']

Después de cabecearme un rato, vi que la documentación lo decía:
http://www.djangoproject.com/documentation/request_response/#attributes

Hice una prueba para ver cómo se veía request.META y esto fue lo que obtuve:
[AUTH_TYPE]: None
[HTTP_COOKIE]: sessionid=4993370cb1d7b51eb013a6f12eccacc4; __utma=258392522.165289698.1205853464.1205853464.1205853464.1; __utmz=258392522.1205853464.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=258392522.1; __utmc=258392522.1
[SERVER_SOFTWARE]: mod_python
[SCRIPT_NAME]: None
[REQUEST_METHOD]: GET
[PATH_INFO]: /test/
[SERVER_PROTOCOL]: HTTP/1.1
[QUERY_STRING]: None
[HTTP_TE]: deflate, gzip, chunked, identity, trailers
[CONTENT_LENGTH]: 0
[HTTP_ACCEPT_CHARSET]: iso-8859-1, utf-8, utf-16, *;q=0.1
[REMOTE_USER]: None
[HTTP_CONNECTION]: Keep-Alive, TE
[SERVER_NAME]: kultrun.intra.wiseocean.cl
[REMOTE_ADDR]: 192.168.10.68
[PATH_TRANSLATED]: None
[SERVER_PORT]: 0
[HTTP_USER_AGENT]: Opera/9.26 (X11; Linux i686; U; en)
[HTTP_HOST]: 192.168.10.68
[HTTP_COOKIE2]: $Version=1
[HTTP_CACHE_CONTROL]: no-cache
[HTTP_ACCEPT]: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
[GATEWAY_INTERFACE]: CGI/1.1
[HTTP_ACCEPT_LANGUAGE]: en-US,en;q=0.9
[REMOTE_IDENT]: None
[CONTENT_TYPE]: None
[REMOTE_HOST]: None
[HTTP_ACCEPT_ENCODING]: deflate, gzip, x-gzip, identity, *;q=0


En caso de necesitar la IP directamente desde python sin pasar por django, se puede hacer:

import socket
socket.gethostbyname(socket.gethostname())
socket.gethostbyname_ex(socket.gethostname())

No hay comentarios: