diff options
| -rw-r--r-- | debug_toolbar/middleware.py | 2 | ||||
| -rw-r--r-- | tests/tests.py | 15 | ||||
| -rw-r--r-- | tests/urls.py | 12 | ||||
| -rw-r--r-- | tests/views.py | 9 |
4 files changed, 29 insertions, 9 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index 0d07411..b0863d9 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -135,7 +135,7 @@ class DebugToolbarMiddleware(object): for panel in toolbar.panels: panel.process_response(request, response) response.content = replace_insensitive( - force_text(response.content), + force_text(response.content, encoding=settings.DEFAULT_CHARSET), self.tag, force_text(toolbar.render_toolbar() + self.tag)) if response.get('Content-Length', None): diff --git a/tests/tests.py b/tests/tests.py index 5390025..6883428 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,3 +1,5 @@ +# coding: utf-8 + from __future__ import unicode_literals import threading @@ -161,6 +163,19 @@ class DebugToolbarTestCase(BaseTestCase): self.assertEqual(stats['view_kwargs'], 'None') self.assertEqual(stats['view_func'], '<no view>') + def test_non_utf8_charset(self): + with self.settings(DEBUG=True, + DEFAULT_CHARSET='iso-8859-1', + INTERNAL_IPS=['127.0.0.1']): + + response = self.client.get('/regular/ASCII/') + self.assertContains(response, 'ASCII') # template + self.assertContains(response, 'djDebug') # toolbar + + response = self.client.get('/regular/LÀTÍN/') + self.assertContains(response, 'LÀTÍN') # template + self.assertContains(response, 'djDebug') # toolbar + class DebugToolbarNameFromObjectTest(BaseTestCase): def test_func(self): diff --git a/tests/urls.py b/tests/urls.py index 9c24c1e..4fb51c9 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -12,10 +12,10 @@ from django.contrib import admin admin.autodiscover() -urlpatterns = patterns('', - # This pattern should be last to ensure tests still work - url(r'^resolving1/(.+)/(.+)/$', 'tests.views.resolving_view', name='positional-resolving'), - url(r'^resolving2/(?P<arg1>.+)/(?P<arg2>.+)/$', 'tests.views.resolving_view'), - url(r'^resolving3/(.+)/$', 'tests.views.resolving_view', { 'arg2' : 'default' }), - url(r'^execute_sql/$', 'tests.views.execute_sql'), +urlpatterns = patterns('tests.views', + url(r'^resolving1/(.+)/(.+)/$', 'resolving_view', name='positional-resolving'), + url(r'^resolving2/(?P<arg1>.+)/(?P<arg2>.+)/$', 'resolving_view'), + url(r'^resolving3/(.+)/$', 'resolving_view', { 'arg2' : 'default' }), + url(r'^regular/(?P<title>.*)/$', 'regular_view'), + url(r'^execute_sql/$', 'execute_sql'), ) diff --git a/tests/views.py b/tests/views.py index ec9f30e..f756023 100644 --- a/tests/views.py +++ b/tests/views.py @@ -3,12 +3,17 @@ from __future__ import unicode_literals from django.contrib.auth.models import User from django.http import HttpResponse + def execute_sql(request): list(User.objects.all()) - return HttpResponse() + +def regular_view(request, title='Test'): + content = '<html><head><title>%s</title><body></body></html>' % title + return HttpResponse(content) + + def resolving_view(request, arg1, arg2): # see test_url_resolving in tests.py return HttpResponse() - |
