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
This commit is contained in:
Adrian Holovaty 2005-10-05 23:36:17 +00:00
parent 16f9b08611
commit c3fa47edb8
2 changed files with 19 additions and 18 deletions

View File

@ -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')

View File

@ -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: