diff --git a/django/contrib/sitemaps/views.py b/django/contrib/sitemaps/views.py index 2255587a9e..b117b33aab 100644 --- a/django/contrib/sitemaps/views.py +++ b/django/contrib/sitemaps/views.py @@ -1,9 +1,10 @@ -from django.http import HttpResponse, Http404 -from django.template import loader -from django.contrib.sites.models import get_current_site from django.core import urlresolvers -from django.utils.encoding import smart_str from django.core.paginator import EmptyPage, PageNotAnInteger +from django.http import HttpResponse, Http404 +from django.template.response import TemplateResponse +from django.utils.encoding import smart_str + +from django.contrib.sites.models import get_current_site def index(request, sitemaps, template_name='sitemap_index.xml', mimetype='application/xml'): @@ -21,8 +22,7 @@ def index(request, sitemaps, if pages > 1: for page in range(2, pages+1): sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page)) - xml = loader.render_to_string(template_name, {'sitemaps': sites}) - return HttpResponse(xml, mimetype=mimetype) + return TemplateResponse(request, template_name, {'sitemaps': sites}, mimetype=mimetype) def sitemap(request, sitemaps, section=None, template_name='sitemap.xml', mimetype='application/xml'): @@ -44,5 +44,4 @@ def sitemap(request, sitemaps, section=None, raise Http404("Page %s empty" % page) except PageNotAnInteger: raise Http404("No page '%s'" % page) - xml = smart_str(loader.render_to_string(template_name, {'urlset': urls})) - return HttpResponse(xml, mimetype=mimetype) + return TemplateResponse(request, template_name, {'urlset': urls}, mimetype=mimetype) \ No newline at end of file diff --git a/docs/ref/contrib/sitemaps.txt b/docs/ref/contrib/sitemaps.txt index 6d8fe61f35..300c142f0b 100644 --- a/docs/ref/contrib/sitemaps.txt +++ b/docs/ref/contrib/sitemaps.txt @@ -313,6 +313,15 @@ parameter to the ``sitemap`` and ``index`` views via the URLconf:: }), ) + +.. versionchanged:: 1.4 + + In addition, these views also return + :class:`~django.template.response.TemplateResponse` + instances which allow you to easily customize the response data before + rendering. For more details, see the + :doc:`TemplateResponse documentation `. + Context variables ------------------