Index: django/contrib/syndication/feeds.py
===================================================================
--- django/contrib/syndication/feeds.py	(revision 8319)
+++ django/contrib/syndication/feeds.py	(working copy)
@@ -1,13 +1,12 @@
 from datetime import datetime, timedelta
-
+from django.conf import settings
+from django.contrib.sites.models import Site, RequestSite
 from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
-from django.template import loader, Template, TemplateDoesNotExist
-from django.contrib.sites.models import Site, RequestSite
+from django.template import RequestContext, loader, Template, \
+    TemplateDoesNotExist
 from django.utils import feedgenerator
+from django.utils.encoding import smart_unicode, iri_to_uri
 from django.utils.tzinfo import FixedOffset
-from django.utils.encoding import smart_unicode, iri_to_uri
-from django.conf import settings         
-from django.template import RequestContext
 
 def add_domain(domain, url):
     if not (url.startswith('http://') or url.startswith('https://')):
@@ -32,12 +31,33 @@
         self.feed_url = request.path
         self.title_template_name = self.title_template or ('feeds/%s_title.html' % slug)
         self.description_template_name = self.description_template or ('feeds/%s_description.html' % slug)
+        if Site._meta.installed:
+            self.current_site = Site.objects.get_current()
+        else:
+            self.current_site = RequestSite(self.request)
 
     def item_link(self, item):
         try:
             return item.get_absolute_url()
         except AttributeError:
             raise ImproperlyConfigured, "Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class." % item.__class__.__name__
+        
+    def item_title(self, item):
+        try:
+            title_tmp = loader.get_template(self.title_template_name)
+        except TemplateDoesNotExist:
+            return unicode(item)
+        title_rc = RequestContext(self.request, {'obj': item, 'site': self.current_site})
+        title_rc.autoescape = False
+        return title_tmp.render(title_rc)
+    
+    def item_description(self, item):
+        try:
+            description_tmp = loader.get_template(self.description_template_name)
+        except TemplateDoesNotExist:
+            return unicode(item)
+        description_rc = RequestContext(self.request, {'obj': item, 'site': self.current_site})
+        return description_tmp.render(description_rc)
 
     def __get_dynamic_attr(self, attname, obj, default=None):
         try:
@@ -77,13 +97,8 @@
         except ObjectDoesNotExist:
             raise FeedDoesNotExist
 
-        if Site._meta.installed:
-            current_site = Site.objects.get_current()
-        else:
-            current_site = RequestSite(self.request)
-        
         link = self.__get_dynamic_attr('link', obj)
-        link = add_domain(current_site.domain, link)
+        link = add_domain(self.current_site.domain, link)
 
         feed = self.feed_type(
             title = self.__get_dynamic_attr('title', obj),
@@ -91,7 +106,7 @@
             link = link,
             description = self.__get_dynamic_attr('description', obj),
             language = settings.LANGUAGE_CODE.decode(),
-            feed_url = add_domain(current_site.domain,
+            feed_url = add_domain(self.current_site.domain,
                                   self.__get_dynamic_attr('feed_url', obj)),
             author_name = self.__get_dynamic_attr('author_name', obj),
             author_link = self.__get_dynamic_attr('author_link', obj),
@@ -102,17 +117,8 @@
             ttl = self.__get_dynamic_attr('ttl', obj),
         )
 
-        try:
-            title_tmp = loader.get_template(self.title_template_name)
-        except TemplateDoesNotExist:
-            title_tmp = Template('{{ obj }}')
-        try:
-            description_tmp = loader.get_template(self.description_template_name)
-        except TemplateDoesNotExist:
-            description_tmp = Template('{{ obj }}')
-
         for item in self.__get_dynamic_attr('items', obj):
-            link = add_domain(current_site.domain, self.__get_dynamic_attr('item_link', item))
+            link = add_domain(self.current_site.domain, self.__get_dynamic_attr('item_link', item))
             enc = None
             enc_url = self.__get_dynamic_attr('item_enclosure_url', item)
             if enc_url:
@@ -147,9 +153,9 @@
                 pubdate = pubdate.replace(tzinfo=FixedOffset(tzOffset))
 
             feed.add_item(
-                title = title_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})),
+                title = self.__get_dynamic_attr('item_title', item),
                 link = link,
-                description = description_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})),
+                description = self.__get_dynamic_attr('item_description', item),
                 unique_id = self.__get_dynamic_attr('item_guid', item, link),
                 enclosure = enc,
                 pubdate = pubdate,
