diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py index aa3a729a8a..7d7c7af65c 100644 --- a/django/utils/feedgenerator.py +++ b/django/utils/feedgenerator.py @@ -224,7 +224,9 @@ class RssFeed(SyndicationFeed): handler.addQuickElement(u"title", self.feed['title']) handler.addQuickElement(u"link", self.feed['link']) handler.addQuickElement(u"description", self.feed['description']) - handler.addQuickElement(u"atom:link", None, {u"rel": u"self", u"href": self.feed['feed_url']}) + if self.feed['feed_url'] is not None: + handler.addQuickElement(u"atom:link", None, + {u"rel": u"self", u"href": self.feed['feed_url']}) if self.feed['language'] is not None: handler.addQuickElement(u"language", self.feed['language']) for cat in self.feed['categories']: diff --git a/tests/regressiontests/utils/feedgenerator.py b/tests/regressiontests/utils/feedgenerator.py index dd20f02757..6b85abf89c 100644 --- a/tests/regressiontests/utils/feedgenerator.py +++ b/tests/regressiontests/utils/feedgenerator.py @@ -87,3 +87,16 @@ class FeedgeneratorTest(unittest.TestCase): atom_feed.mime_type, "application/atom+xml; charset=utf-8" ) + # Two regression tests for #14202 + + def test_feed_without_feed_url_gets_rendered_without_atom_link(self): + feed = feedgenerator.Rss201rev2Feed('title', '/link/', 'descr') + self.assertEquals(feed.feed['feed_url'], None) + feed_content = feed.writeString('utf-8') + self.assertNotIn('', feed_content)