2015-11-09 4 views
4

Я знаю следующие методы для добавления промежуточного программного 1) Добавления пользовательских промежуточного компонента в DJANGO используя MIDDLEWARE_CLASSESДжанго - применение конкретных промежуточного программного обеспечения

MIDDLEWARE_CLASSES = (
    '......' 
    'path.to.custom.middlware',) 

2) Добавление просматривать конкретные промежуточный программное обеспечение с использованием decorate_from_middlware

cache_page = decorator_from_middleware(CacheMiddleware) 

@cache_page(3600) 
def my_view(request): 
    pass 

Моя просьба о том, как создать прикладной класс промежуточного программного обеспечения, такой как

APPSPECIFIC_MIDDLEWARE_CLASSES = ('path.to.middlwareclass1', 
'path.to.middlwareclass2', 
'path.to.middlwareclass3',) 

middlwareclass - это либо функция, либо класс? Есть ли какие-либо действия с использованием URL-адреса или любого другого метода. Или второй метод - единственный способ и добавить все классы промежуточного ПО отдельно к представлению?

Update: http://python-social-auth.readthedocs.org/en/latest/pipeline.html Как и в о применении, SOCIAL_AUTH_PIPELINE работает для социальных приложений в одиночку. которая отличается от глобальных настроек проекта ..

Спасибо заранее

+0

См. Это, может быть, это может вам помочь. http://stackoverflow.com/questions/18322262/how-to-setup-custom-middleware-in-django –

+0

@ user2393267 Как я и просил, он должен быть специфичным для приложения. Если я добавлю промежуточное программное обеспечение, оно будет применимо для всех приложений в проекте django. –

+0

Возможный дубликат [настроек django для каждого приложения - наилучшая практика?] (Http://stackoverflow.com/questions/22386580/django-settings-per-application-best-practice) – sobolevn

ответ

3

Это, вероятно, не представляется возможным способом, который вы хотите, потому что Джанго не отслеживает то, что точка зрения исходит из того, какого приложения. Но вы можете создать некоторое промежуточное программное обеспечение с условием внутри process_view, здесь вы можете проверить, какой вид вызывается и что-то делать, если представление соответствует вашим критериям (в этом случае представление происходит из определенного приложения).

Другой подход, если вы используете представления, основанные на классах, - создать в приложении какое-то представление mixin или базового представления, украсить его промежуточным программным обеспечением и использовать его в каждом представлении из вашего приложения.

+0

В этом http: // python-social- auth.readthedocs.org/en/latest/pipeline.html конвейеры сделаны специально для конкретного (социального) приложения. Однако теперь я включу условия в process_view .. @GwynBleidD спасибо :) –