Django

Code

Ticket #2489: HttpResponse_headers.patch

File HttpResponse_headers.patch, 1.6 kB (added by Alex Dedul, 2 years ago)
  • __init__.py

    old new  
    166166        else: 
    167167            self._iterator = [content] 
    168168            self._is_string = True 
    169         self.headers = {'Content-Type': mimetype} 
     169        self._headers = {'Content-Type': mimetype} 
    170170        self.cookies = SimpleCookie() 
    171171        self.status_code = 200 
    172172 
     
    177177            + '\n\n' + self.content 
    178178 
    179179    def __setitem__(self, header, value): 
    180         self.headers[header] = value 
     180        self._headers[header] = value 
    181181 
    182182    def __delitem__(self, header): 
    183183        try: 
    184             del self.headers[header] 
     184            del self._headers[header] 
    185185        except KeyError: 
    186186            pass 
    187187 
    188188    def __getitem__(self, header): 
    189         return self.headers[header] 
     189        value = self._headers[header] 
     190        if isinstance(value, unicode): 
     191            value = value.encode(self._charset) 
    190192 
     193        return value 
     194 
     195    def _get_headers(self): 
     196        headers = {} 
     197        for key, value in self._headers.items(): 
     198            if isinstance(value, unicode): 
     199                headers[key] = value.encode(self._charset) 
     200            else: 
     201                headers[key] = value 
     202 
     203        return headers 
     204 
     205    headers = property(_get_headers) 
     206 
    191207    def has_header(self, header): 
    192208        "Case-insensitive check for a header" 
    193209        header = header.lower() 
    194         for key in self.headers.keys(): 
     210        for key in self._headers.keys(): 
    195211            if key.lower() == header: 
    196212                return True 
    197213        return False