Django में, मैं अनुरोध और प्रतिक्रिया सामग्री की लंबाई लॉगिंग करने का प्रयास करता हूं, जो वास्तव में वही है जो Django सर्वर stderr को प्रिंट करता है।मैं Django प्रतिक्रिया ऑब्जेक्ट की सामग्री लंबाई कैसे प्राप्त करूं?
[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
तो, मैं निम्नानुसार एक साधारण मिडलवेयर लिखता हूं, लेकिन, 'सामग्री-लंबाई' का मान हमेशा खाली होता है।
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
मैं आग डिबग के माध्यम से देख लिया है, है प्रतिक्रिया हेडर में 'सामग्री-लंबाई'। लेकिन वहाँ मिडलवेयर में कोई 'सामग्री-लंबाई' है, "प्रिंट response.items()" पता चलता है:
[('Content-Type', 'text/html; charset=utf-8')]
वहाँ मिडलवेयर आदेशों में से किसी समस्या है?
यदि 'स्थानांतरण-एन्कोडिंग'' खंडित किया गया है तो कोई 'सामग्री-लंबाई' शीर्षलेख नहीं है। http://tools.ietf.org/html/rfc2616#section-4.4 –