В моей системе разработки (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 происходит до вызова представлений (очевидно), но я также думал, что Middleware вызывается ПОСЛЕ диспетчеризации URL и до вызова представлений.Но похоже, что Middleware вызывается перед отправкой URL.
Так что, похоже, я ошибся.Может кто-нибудь объяснить, когда именно Middleware вызывается в связи с отправкой URL?