Fixed #32648 -- Fixed VariableDoesNotExist rendering sitemaps template.
This commit is contained in:
parent
23fa29f6a6
commit
08c60cce3b
1
AUTHORS
1
AUTHORS
|
@ -94,6 +94,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Aron Podrigal <aronp@guaranteedplus.com>
|
Aron Podrigal <aronp@guaranteedplus.com>
|
||||||
Artem Gnilov <boobsd@gmail.com>
|
Artem Gnilov <boobsd@gmail.com>
|
||||||
Arthur <avandorp@gmail.com>
|
Arthur <avandorp@gmail.com>
|
||||||
|
Arthur Jovart <arthur@jovart.com>
|
||||||
Arthur Koziel <http://arthurkoziel.com>
|
Arthur Koziel <http://arthurkoziel.com>
|
||||||
Arthur Rio <arthur.rio44@gmail.com>
|
Arthur Rio <arthur.rio44@gmail.com>
|
||||||
Arvis Bickovskis <viestards.lists@gmail.com>
|
Arvis Bickovskis <viestards.lists@gmail.com>
|
||||||
|
|
|
@ -168,13 +168,13 @@ class Sitemap:
|
||||||
'lastmod': lastmod,
|
'lastmod': lastmod,
|
||||||
'changefreq': self._get('changefreq', item),
|
'changefreq': self._get('changefreq', item),
|
||||||
'priority': str(priority if priority is not None else ''),
|
'priority': str(priority if priority is not None else ''),
|
||||||
|
'alternates': [],
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.i18n and self.alternates:
|
if self.i18n and self.alternates:
|
||||||
alternates = []
|
|
||||||
for lang_code in self._languages():
|
for lang_code in self._languages():
|
||||||
loc = f'{protocol}://{domain}{self._location(item, lang_code)}'
|
loc = f'{protocol}://{domain}{self._location(item, lang_code)}'
|
||||||
alternates.append({
|
url_info['alternates'].append({
|
||||||
'location': loc,
|
'location': loc,
|
||||||
'lang_code': lang_code,
|
'lang_code': lang_code,
|
||||||
})
|
})
|
||||||
|
@ -182,11 +182,10 @@ class Sitemap:
|
||||||
lang_code = settings.LANGUAGE_CODE
|
lang_code = settings.LANGUAGE_CODE
|
||||||
loc = f'{protocol}://{domain}{self._location(item, lang_code)}'
|
loc = f'{protocol}://{domain}{self._location(item, lang_code)}'
|
||||||
loc = loc.replace(f'/{lang_code}/', '/', 1)
|
loc = loc.replace(f'/{lang_code}/', '/', 1)
|
||||||
alternates.append({
|
url_info['alternates'].append({
|
||||||
'location': loc,
|
'location': loc,
|
||||||
'lang_code': 'x-default',
|
'lang_code': 'x-default',
|
||||||
})
|
})
|
||||||
url_info['alternates'] = alternates
|
|
||||||
|
|
||||||
urls.append(url_info)
|
urls.append(url_info)
|
||||||
|
|
||||||
|
|
|
@ -30,3 +30,6 @@ Bugfixes
|
||||||
* Fixed a regression in Django 3.2 that caused a crash of
|
* Fixed a regression in Django 3.2 that caused a crash of
|
||||||
:attr:`.ModelAdmin.search_fields` when searching against phrases with
|
:attr:`.ModelAdmin.search_fields` when searching against phrases with
|
||||||
unbalanced quotes (:ticket:`32649`).
|
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`).
|
||||||
|
|
|
@ -255,8 +255,10 @@ class HTTPSitemapTests(SitemapTestsBase):
|
||||||
@override_settings(LANGUAGES=(('en', 'English'), ('pt', 'Portuguese')))
|
@override_settings(LANGUAGES=(('en', 'English'), ('pt', 'Portuguese')))
|
||||||
def test_simple_i18n_sitemap_index(self):
|
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.
|
||||||
"""
|
"""
|
||||||
|
with self.assertNoLogs('django.template', 'DEBUG'):
|
||||||
response = self.client.get('/simple/i18n.xml')
|
response = self.client.get('/simple/i18n.xml')
|
||||||
expected_content = """<?xml version="1.0" encoding="UTF-8"?>
|
expected_content = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
|
|
Loading…
Reference in New Issue