--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -1,7 +1,7 @@
 from django.contrib.auth.models import User
 from django.contrib.auth import authenticate
 from django.contrib.auth.tokens import default_token_generator
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
 from django.template import Context, loader
 from django import forms
 from django.utils.translation import ugettext_lazy as _
@@ -116,7 +116,10 @@ class PasswordResetForm(forms.Form):
         from django.core.mail import send_mail
         for user in self.users_cache:
             if not domain_override:
-                current_site = Site.objects.get_current()
+                if Site._meta.installed:
+                    current_site = Site.objects.get_current()
+                else:
+                    current_site = RequestSite(request)
                 site_name = current_site.name
                 domain = current_site.domain
             else:
--- a/django/contrib/comments/feeds.py
+++ b/django/contrib/comments/feeds.py
@@ -1,6 +1,6 @@
 from django.conf import settings
 from django.contrib.syndication.feeds import Feed
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
 from django.contrib import comments
 
 class LatestCommentFeed(Feed):
@@ -8,17 +8,26 @@ class LatestCommentFeed(Feed):
 
     def title(self):
         if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
+            if Site._meta.installed:
+                self._site = Site.objects.get_current()
+            else:
+                self._site = RequestSite(request)
         return u"%s comments" % self._site.name
 
     def link(self):
         if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
+            if Site._meta.installed:
+                self._site = Site.objects.get_current()
+            else:
+                self._site = RequestSite(request)
         return "http://%s/" % (self._site.domain)
 
     def description(self):
         if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
+            if Site._meta.installed:
+                self._site = Site.objects.get_current()
+            else:
+                self._site = RequestSite(request)
         return u"Latest comments on %s" % self._site.name
 
     def items(self):
--- a/django/contrib/contenttypes/views.py
+++ b/django/contrib/contenttypes/views.py
@@ -1,6 +1,6 @@
 from django import http
 from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
 from django.core.exceptions import ObjectDoesNotExist
 
 def shortcut(request, content_type_id, object_id):
@@ -54,7 +54,10 @@ def shortcut(request, content_type_id, object_id):
     # Fall back to the current site (if possible).
     if object_domain is None:
         try:
-            object_domain = Site.objects.get_current().domain
+            if Site._meta.installed:
+                object_domain = Site.objects.get_current().domain
+            else:
+                object_domain = RequestSite(request).domain
         except Site.DoesNotExist:
             pass
 
--- a/django/contrib/gis/sitemaps/views.py
+++ b/django/contrib/gis/sitemaps/views.py
@@ -1,7 +1,7 @@
 from django.http import HttpResponse, Http404
 from django.template import loader
 from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
 from django.core import urlresolvers
 from django.core.paginator import EmptyPage, PageNotAnInteger
 from django.db.models import get_model
@@ -15,7 +15,10 @@ def index(request, sitemaps):
     This view generates a sitemap index that uses the proper view
     for resolving geographic section sitemap URLs.
     """
-    current_site = Site.objects.get_current()
+    if Site._meta.installed:
+        current_site = Site.objects.get_current()
+    else:
+        current_site = RequestSite(request)
     sites = []
     protocol = request.is_secure() and 'https' or 'http'
     for section, site in sitemaps.items():
--- a/django/contrib/sitemaps/__init__.py
+++ b/django/contrib/sitemaps/__init__.py
@@ -27,8 +27,11 @@ def ping_google(sitemap_url=None, ping_url=PING_URL):
     if sitemap_url is None:
         raise SitemapNotFound("You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.")
 
-    from django.contrib.sites.models import Site
-    current_site = Site.objects.get_current()
+    from django.contrib.sites.models import Site, RequestSite
+    if Site._meta.installed:
+        current_site = Site.objects.get_current()
+    else:
+        current_site = RequestSite(request)
     url = "http://%s%s" % (current_site.domain, sitemap_url)
     params = urllib.urlencode({'sitemap':url})
     urllib.urlopen("%s?%s" % (ping_url, params))
@@ -60,8 +63,11 @@ class Sitemap(object):
     paginator = property(_get_paginator)
 
     def get_urls(self, page=1):
-        from django.contrib.sites.models import Site
-        current_site = Site.objects.get_current()
+        from django.contrib.sites.models import Site, RequestSite
+        if Site._meta.installed:
+            current_site = Site.objects.get_current()
+        else:
+            current_site = RequestSite(request)
         urls = []
         for item in self.paginator.page(page).object_list:
             loc = "http://%s%s" % (current_site.domain, self.__get('location', item))
@@ -76,8 +82,11 @@ class Sitemap(object):
 
 class FlatPageSitemap(Sitemap):
     def items(self):
-        from django.contrib.sites.models import Site
-        current_site = Site.objects.get_current()
+        from django.contrib.sites.models import Site, RequestSite
+        if Site._meta.installed:
+            current_site = Site.objects.get_current()
+        else:
+            current_site = RequestSite(request)
         return current_site.flatpage_set.all()
 
 class GenericSitemap(Sitemap):
--- a/django/contrib/sitemaps/views.py
+++ b/django/contrib/sitemaps/views.py
@@ -1,12 +1,15 @@
 from django.http import HttpResponse, Http404
 from django.template import loader
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
 from django.core import urlresolvers
 from django.utils.encoding import smart_str
 from django.core.paginator import EmptyPage, PageNotAnInteger
 
 def index(request, sitemaps):
-    current_site = Site.objects.get_current()
+    if Site._meta.installed:
+        current_site = Site.objects.get_current()
+    else:
+        current_site = RequestSite(request)
     sites = []
     protocol = request.is_secure() and 'https' or 'http'
     for section, site in sitemaps.items():
