summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-10-05 23:36:17 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-10-05 23:36:17 +0000
commitc3fa47edb85fa0b3d77a3ca864990d6b5dba3ff0 (patch)
treeeb012f1c031c9b81c3d92e71a8fdc42fd940a528
parent16f9b08611ddc5512e16d9fcb6ce405f2962d319 (diff)
Added USE_FLAT_PAGES setting, which defaults to True.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@782 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/global_settings.py3
-rw-r--r--django/middleware/common.py34
2 files changed, 19 insertions, 18 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index c5e560c9e1..0d9a50148d 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -100,6 +100,9 @@ ALLOWED_INCLUDE_ROOTS = ()
# is an admin.
ADMIN_FOR = []
+# Whether to check the flat-pages table as a last resort for all 404 errors.
+USE_FLAT_PAGES = True
+
# 404s that may be ignored.
IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')
IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')
diff --git a/django/middleware/common.py b/django/middleware/common.py
index ee6b68be7e..4abe4ee236 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -54,29 +54,27 @@ class CommonMiddleware:
return None
def process_response(self, request, response):
- """
- Check for a flatfile (for 404s) and calculate the Etag, if needed.
- """
-
- # If this was a 404, check for a flat file
+ "Check for a flat page (for 404s) and calculate the Etag, if needed."
if response.status_code == 404:
- try:
- response = flat_file(request, request.path)
- except exceptions.Http404:
+ if settings.USE_FLAT_PAGES:
+ try:
+ return flat_file(request, request.path)
+ except exceptions.Http404:
+ pass
+
+ if settings.SEND_BROKEN_LINK_EMAILS:
# If the referrer was from an internal link or a non-search-engine site,
# send a note to the managers.
- if settings.SEND_BROKEN_LINK_EMAILS:
- domain = request.META['HTTP_HOST']
- referer = request.META.get('HTTP_REFERER', None)
- is_internal = referer and (domain in referer)
- path = request.get_full_path()
- if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer):
- mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain),
- "Referrer: %s\nRequested URL: %s\n" % (referer, request.get_full_path()))
- # If there's no flatfile we want to return the original 404 response
+ domain = request.META['HTTP_HOST']
+ referer = request.META.get('HTTP_REFERER', None)
+ is_internal = referer and (domain in referer)
+ path = request.get_full_path()
+ if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer):
+ mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain),
+ "Referrer: %s\nRequested URL: %s\n" % (referer, request.get_full_path()))
return response
- # Use ETags, if requested
+ # Use ETags, if requested.
if settings.USE_ETAGS:
etag = md5.new(response.get_content_as_string('utf-8')).hexdigest()
if request.META.get('HTTP_IF_NONE_MATCH') == etag: