В моей системе разработки (mac os x) я добавил следующие строки в конец моего файла urls.py:
if re.match('darwin',sys.platform):
# serving media files using the development server
urlpatterns += patterns('',(r'^site_media/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': '/Users/henri/sites_django/wmsproject/wmssite/site_media'}),)
для обслуживания медиафайлов .
Все идет, как ожидалось, ну почти ...
Я включил класс Middleware для перехвата обработки перед вызовом моих представлений. В этом промежуточном программном обеспечении я определил функцию process_view. Что-то работает не так, как ожидалось, поэтому я вставил «assert False» в первую строку этой функции, а именно:
def process_view(self, request, view_func, view_args, view_kwargs):
assert False
Когда я ввожу этот URL-адрес в моем браузере:
http://localhost:8000/site_media/images/logo_wms_web.gif
Я вижу, к моему большому удивлению, следующее информация о дампе:
self <wmssite.middleware.LanguageMiddleware.LanguageRedirect instance at 0x10117fe60>
view_args {}
view_func <function serve at 0x101281578>
view_kwargs {'document_root': '/Users/henri/sites_django/wmsproject/wmssite/site_media', 'path': u'images/logo_wms_web.gif'}
Параметры, которые я вижу в дампе, в точности соответствуют параметрам, которые вы видели в только что показанном мною файле urls.py. Отправка URL-адресов происходит до вызова представлений (очевидно), но я также думал, что промежуточное ПО вызывалось ПОСЛЕ отправки URL-адресов и до вызова представлений. Но похоже, что промежуточное ПО вызывается перед отправкой URL.
Так что, похоже, я ошибся. Может ли кто-нибудь объяснить, когда именно промежуточное ПО вызывается в связи с отправкой URL-адресов?