1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #333 and #440 -- Split DEFAULT_MIME_TYPE setting into DEFAULT_CONTENT_TYPE and DEFAULT_CHARSET. Thanks, Maniac.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@786 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty
2005-10-06 02:27:08 +00:00
parent 261ab166ce
commit ab9aacd4db
9 changed files with 22 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
from django.core import validators
from django.core.exceptions import PermissionDenied
from django.utils.html import escape
from django.conf.settings import DEFAULT_CHARSET
FORM_FIELD_ID_PREFIX = 'id_'
@@ -221,7 +222,7 @@ class TextField(FormField):
self.validator_list = [self.isValidLength, self.hasNoNewlines] + validator_list
def isValidLength(self, data, form):
if data and self.maxlength and len(data) > self.maxlength:
if data and self.maxlength and len(data.decode(DEFAULT_CHARSET)) > self.maxlength:
raise validators.ValidationError, "Ensure your text is less than %s characters." % self.maxlength
def hasNoNewlines(self, data, form):
@@ -235,7 +236,7 @@ class TextField(FormField):
if self.maxlength:
maxlength = 'maxlength="%s" ' % self.maxlength
if isinstance(data, unicode):
data = data.encode('utf-8')
data = data.encode(DEFAULT_CHARSET)
return '<input type="text" id="%s" class="v%s%s" name="%s" size="%s" value="%s" %s/>' % \
(FORM_FIELD_ID_PREFIX + self.field_name, self.__class__.__name__, self.is_required and ' required' or '',
self.field_name, self.length, escape(data), maxlength)
@@ -264,7 +265,7 @@ class LargeTextField(TextField):
if data is None:
data = ''
if isinstance(data, unicode):
data = data.encode('utf-8')
data = data.encode(DEFAULT_CHARSET)
return '<textarea id="%s" class="v%s%s" name="%s" rows="%s" cols="%s">%s</textarea>' % \
(FORM_FIELD_ID_PREFIX + self.field_name, self.__class__.__name__, self.is_required and ' required' or '',
self.field_name, self.rows, self.cols, escape(data))

View File

@@ -150,14 +150,15 @@ class ModPythonHandler(BaseHandler):
def populate_apache_request(http_response, mod_python_req):
"Populates the mod_python request object with an HttpResponse"
mod_python_req.content_type = http_response['Content-Type'] or httpwrappers.DEFAULT_MIME_TYPE
from django.conf import settings
mod_python_req.content_type = http_response['Content-Type']
for key, value in http_response.headers.items():
if key != 'Content-Type':
mod_python_req.headers_out[key] = value
for c in http_response.cookies.values():
mod_python_req.headers_out.add('Set-Cookie', c.output(header=''))
mod_python_req.status = http_response.status_code
mod_python_req.write(http_response.get_content_as_string('utf-8'))
mod_python_req.write(http_response.get_content_as_string(settings.DEFAULT_CHARSET))
def handler(req):
# mod_python hooks into this function.

View File

@@ -167,6 +167,6 @@ class WSGIHandler(BaseHandler):
response_headers = response.headers.items()
for c in response.cookies.values():
response_headers.append(('Set-Cookie', c.output(header='')))
output = [response.get_content_as_string('utf-8')]
output = [response.get_content_as_string(settings.DEFAULT_CHARSET)]
start_response(status, response_headers)
return output

View File

@@ -55,6 +55,7 @@ times with multiple contexts)
'\n<html>\n\n</html>\n'
"""
import re
from django.conf.settings import DEFAULT_CHARSET
__all__ = ('Template','Context','compile_string')
@@ -474,7 +475,7 @@ class VariableNode(Node):
if not isinstance(output, basestring):
output = str(output)
elif isinstance(output, unicode):
output = output.encode('utf-8')
output = output.encode(DEFAULT_CHARSET)
return output
def register_tag(token_command, callback_function):