django url-диспетчеризация и промежуточное ПО

В моей системе разработки (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-адресов?

1
задан Martijn Pieters 22 April 2014 в 15:00
поделиться