2011-12-13 5 views

risposta

9

È possibile ottenere le informazioni tramite HttpRequest. Scopri i documenti Django here.

È possibile accedere a questo tramite l'attributo META che è un dizionario contenente le informazioni dell'intestazione HTTP.

Esempio:

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

'SERVER_PORT' esiste in modo affidabile, o c'è il pericolo che a volte sia assente? – exupero

+0

bene, per quanto posso dire che funzionerà bene su un server di sviluppo. Non ho provato a usarlo in esecuzione con Apache. Vorrei scrivere un po 'di codice di test per ricontrollare. Altrimenti, non sono sicuro di come altro potresti scoprire senza passare attraverso l'oggetto richiesta. –

+3

Cosa succede se non sei in una vista? – johnboiles

3

forse request.META['SERVER_PORT']

o non sei in una vista?

+12

C'è una soluzione quando non sono in una vista? – utapyngo

0

ho trovato questo potrebbe essere utile se avete bisogno di conoscere il numero di porta o l'indirizzo IP fuori dalla vista

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

(in models.py per esempio.) Questo ti darà un'emissione come di seguito:

192.168.1.222----0.0.0.0:8000 
+0

@utapyngo Questa è la soluzione quando non si è in una vista. –