2011-12-13 10 views

Respuesta

9

Puede obtener la información a través de HttpRequest. Consulte los documentos de Django here.

Esto se puede acceder a través del atributo META, que es un diccionario que contiene la información del encabezado HTTP.

Ejemplo:

def someView(request): 
    #Try printing to screen 
    print request.META['SERVER_PORT'] 
    ... 
    return(response) 
+0

¿Existe 'SERVER_PORT' de manera confiable, o existe el peligro de que a veces falte? – exupero

+0

bueno, por lo que puedo ver, funcionará bien en un servidor de desarrollo. No he intentado usarlo corriendo bajo Apache. Sin embargo, escribiría un poco de código de prueba para verificarlo. De lo contrario, no estoy seguro de qué otra manera lo averiguaría sin pasar por el objeto de solicitud. –

+3

¿Qué pasa si no estás en una vista? – johnboiles

3

quizá request.META['SERVER_PORT']

o no estás en una vista?

+12

¿Hay una solución cuando no estoy en una vista? – utapyngo

0

He encontrado que esto podría ser útil si usted necesita saber el número de puerto o dirección IP fuera de la vista

import sys 
import socket 
logger.error(socket.gethostbyname(socket.gethostname())+"----"+sys.argv[-1]) 

(en models.py por ejemplo). Esto le dará una salida como la siguiente:

192.168.1.222----0.0.0.0:8000 
+0

@utapyngo Esta es la solución cuando no está en una vista. –

Cuestiones relacionadas