Wie bekomme ich die Länge des Inhalts einer Django-response-Objekt?

In Django, ich versuche zur Protokollierung der Anfrage-und Antwort-Inhalt-Länge, die genau das gleiche wie das, was Django server gibt auf stderr.

[05/Apr/2011 22:59:08] "GET /pages/HTTP/1.1" 200 332161
[05/Apr/2011 22:59:15] "GET /pages/12 HTTP/1.1" 301 0
[05/Apr/2011 22:59:15] "GET /pages/12/HTTP/1.1" 200 361474
[05/Apr/2011 22:59:16] "GET /pages/12/load/tags/HTTP/1.1" 200 13899
[05/Apr/2011 22:59:16] "GET /pages/12/load/comments/HTTP/1.1" 200 82

So, ich Schreibe eine einfache middleware wie folgt, aber der Wert von 'Content-Length' ist immer leer.

class LogHttpResponse(object):
    def process_response(self, request, response):
        import datetime  
        print response.items()
        time_text = datetime.datetime.now().strftime('%m/%d/%Y %H:%M:%S')
        print '[%s] "%s %s" %d %s' % (time_text, request.method, request.path, 
                                      response.status_code, 
                                      response.get('Content-Length', ''))
        return response 

Habe ich überprüft durch Feuer-debug, es ist die 'Content-Length' in den response Header. Aber es gibt keine 'Content-Length' in der middleware, "print-Reaktion.Elemente()" zeigt:

[('Content-Type', 'text/html; charset=utf-8')]

Ist es ein problem der middleware-Bestellungen?

InformationsquelleAutor William | 2011-04-05
Schreibe einen Kommentar