diff --git a/AUTHORS b/AUTHORS index 6af620f768e..7f0447ddb16 100644 --- a/AUTHORS +++ b/AUTHORS @@ -94,6 +94,7 @@ answer newbie questions, and generally made Django that much better: Aron Podrigal Artem Gnilov Arthur + Arthur Jovart Arthur Koziel Arthur Rio Arvis Bickovskis diff --git a/django/contrib/sitemaps/__init__.py b/django/contrib/sitemaps/__init__.py index b13507a11ed..46a54ec8f2e 100644 --- a/django/contrib/sitemaps/__init__.py +++ b/django/contrib/sitemaps/__init__.py @@ -168,13 +168,13 @@ class Sitemap: 'lastmod': lastmod, 'changefreq': self._get('changefreq', item), 'priority': str(priority if priority is not None else ''), + 'alternates': [], } if self.i18n and self.alternates: - alternates = [] for lang_code in self._languages(): loc = f'{protocol}://{domain}{self._location(item, lang_code)}' - alternates.append({ + url_info['alternates'].append({ 'location': loc, 'lang_code': lang_code, }) @@ -182,11 +182,10 @@ class Sitemap: lang_code = settings.LANGUAGE_CODE loc = f'{protocol}://{domain}{self._location(item, lang_code)}' loc = loc.replace(f'/{lang_code}/', '/', 1) - alternates.append({ + url_info['alternates'].append({ 'location': loc, 'lang_code': 'x-default', }) - url_info['alternates'] = alternates urls.append(url_info) diff --git a/docs/releases/3.2.1.txt b/docs/releases/3.2.1.txt index d5486f4cc92..4ad9eff5caf 100644 --- a/docs/releases/3.2.1.txt +++ b/docs/releases/3.2.1.txt @@ -30,3 +30,6 @@ Bugfixes * Fixed a regression in Django 3.2 that caused a crash of :attr:`.ModelAdmin.search_fields` when searching against phrases with unbalanced quotes (:ticket:`32649`). + +* Fixed a bug in Django 3.2 where variable lookup errors were logged rendering + the sitemap template if alternates were not defined (:ticket:`32648`). diff --git a/tests/sitemaps_tests/test_http.py b/tests/sitemaps_tests/test_http.py index b546c87fe64..021feb7ad87 100644 --- a/tests/sitemaps_tests/test_http.py +++ b/tests/sitemaps_tests/test_http.py @@ -255,9 +255,12 @@ class HTTPSitemapTests(SitemapTestsBase): @override_settings(LANGUAGES=(('en', 'English'), ('pt', 'Portuguese'))) def test_simple_i18n_sitemap_index(self): """ - A simple i18n sitemap index can be rendered. + A simple i18n sitemap index can be rendered, without logging variable + lookup errors. """ - response = self.client.get('/simple/i18n.xml') + with self.assertRaisesMessage(AssertionError, 'no logs'): + with self.assertLogs('django.template', 'DEBUG'): + response = self.client.get('/simple/i18n.xml') expected_content = """ {0}/en/i18n/testmodel/{1}/never0.5{0}/pt/i18n/testmodel/{1}/never0.5