Changeset 9184 for django/trunk/django/middleware/common.py
- Timestamp:
- 10/07/08 03:22:50 (3 months ago)
- Files:
-
- django/trunk/django/middleware/common.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/middleware/common.py
r8635 r9184 54 54 # trailing slash and there is no pattern for the current path 55 55 if settings.APPEND_SLASH and (not old_url[1].endswith('/')): 56 try: 57 urlresolvers.resolve(request.path_info) 58 except urlresolvers.Resolver404: 56 if (not _is_valid_path(request.path_info) and 57 _is_valid_path("%s/" % request.path_info)): 59 58 new_url[1] = new_url[1] + '/' 60 59 if settings.DEBUG and request.method == 'POST': … … 67 66 "settings.") % (new_url[0], new_url[1]) 68 67 69 if new_url != old_url: 70 # Redirect if the target url exists 71 try: 72 urlresolvers.resolve("%s/" % request.path_info) 73 except urlresolvers.Resolver404: 74 pass 75 else: 76 if new_url[0]: 77 newurl = "%s://%s%s" % ( 78 request.is_secure() and 'https' or 'http', 79 new_url[0], urlquote(new_url[1])) 80 else: 81 newurl = urlquote(new_url[1]) 82 if request.GET: 83 newurl += '?' + request.META['QUERY_STRING'] 84 return http.HttpResponsePermanentRedirect(newurl) 85 86 return None 68 if new_url == old_url: 69 # No redirects required. 70 return 71 if new_url[0]: 72 newurl = "%s://%s%s" % ( 73 request.is_secure() and 'https' or 'http', 74 new_url[0], urlquote(new_url[1])) 75 else: 76 newurl = urlquote(new_url[1]) 77 if request.GET: 78 newurl += '?' + request.META['QUERY_STRING'] 79 return http.HttpResponsePermanentRedirect(newurl) 87 80 88 81 def process_response(self, request, response): … … 120 113 121 114 def _is_ignorable_404(uri): 122 "Returns True if a 404 at the given URL *shouldn't* notify the site managers" 115 """ 116 Returns True if a 404 at the given URL *shouldn't* notify the site managers. 117 """ 123 118 for start in settings.IGNORABLE_404_STARTS: 124 119 if uri.startswith(start): … … 130 125 131 126 def _is_internal_request(domain, referer): 132 "Return true if the referring URL is the same domain as the current request" 127 """ 128 Returns true if the referring URL is the same domain as the current request. 129 """ 133 130 # Different subdomains are treated as different domains. 134 131 return referer is not None and re.match("^https?://%s/" % re.escape(domain), referer) 132 133 def _is_valid_path(path): 134 """ 135 Returns True if the given path resolves against the default URL resolver, 136 False otherwise. 137 138 This is a convenience method to make working with "is this a match?" cases 139 easier, avoiding unnecessarily indented try...except blocks. 140 """ 141 try: 142 urlresolvers.resolve(path) 143 return True 144 except urlresolvers.Resolver404: 145 return False 146
