2014-01-13 4 views
1

У меня есть какой-то пользовательский код, который я хочу выполнить перед вызовом любого из просмотров admin. По понятию это кажется достаточно простым; просто создайте представление оболочки, которое делает то, что я хочу, а затем оберните все просмотры admin в нем. Но как мне это сделать?Как обернуть просмотр admin в django?

Вот соответствующая часть моего основного urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
) 

Есть ли способ, чтобы обернуть все представления администратора без указания каждого из них по отдельности?

ответ

1

Вы можете украсить все Маршрутизованные функции путем создания отдельного urls модуля импорт admin.site.urls, затем динамически строить ваш urlpatterns на основе данных, которые вы читали из admin.site.urls.urlpatterns. Я бы не предложил изменять маршрутизированные функции в модуле admin urls, потому что шаблоны подвергаются статической ссылке.

Но правильный подход состоял бы в том, чтобы написать custom middleware, который может вставлять обработку вида на тех же этапах, что и декораторы: перед вызовом вида с запросом после того, как он выдает исключение или возвращает ответ.

Смежные вопросы