如圖所示,django無法渲染html顯示成下載文件了
一步一步的從render ==》HttpResponse ==》HttpResponseBase 找到
即django文件夾下的http文件夾內的response.py文件
class HttpResponseBase: """ An HTTP response base class with dictionary-accessed headers. This class doesn't handle content. It should not be used directly. Use the HttpResponse and StreamingHttpResponse subclasses instead. """ status_code = 200 def __init__(self, content_type=None, status=None, reason=None, charset=None): # _headers is a mapping of the lower-case name to the original case of # the header (required for working with legacy systems) and the header # value. Both the name of the header and its value are ASCII strings. self._headers = {} self._closable_objects = [] # This parameter is set by the handler. It's necessary to preserve the # historical behavior of request_finished. self._handler_class = None self.cookies = SimpleCookie() self.closed = False if status is not None: try: self.status_code = int(status) except (ValueError, TypeError): raise TypeError('HTTP status code must be an integer.') if not 100 <= self.status_code <= 599: raise ValueError('HTTP status code must be an integer from 100 to 599.') self._reason_phrase = reason self._charset = charset if content_type is None: content_type = '%s; charset=%s' % (settings.DEFAULT_CONTENT_TYPE, self.charset) self['Content-Type'] = content_type
需要在django項目下的settings.py文件添加下面內容
DEFAULT_CONTENT_TYPE = 'text/html'
為了保證Content-Type的值返回正常的值
將response.py的
self['Content-Type'] = content_type
更改成
self['Content-Type'] = content_type if type(content_type) == type('') else 'text/html; charset=utf-8'
然后重新dajngo服務
成功渲染html文件