Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Django] Вызов проверки по определенному урлу 
:(
    Опции темы
ecspertiza
Дата 2.8.2013, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: нет
Всего: 5



День добрый, есть задача выполнять некоторую проверку при вызове определенного урла, например если урл начинается с 

Код

api/


и собственно все что содержит api/ , например

api/
api/auth/
api/soft/

и т.д.

то нужно выполнить некоторую проверку, и в ней вернуть результат либо продолжить выполнение дальше. Конечно можно выполнять проверку в каждой ф-ции по отдельности. Но это дублирование кода и мне это не очень нравится. Можно ли как то написать проверку в одном месте, которая постоянно будет вызываться если в начале урла есть api/ ?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
SoWa
Дата 21.8.2013, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: нет
Всего: 74



Django Middleware вам в помощь


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
bilbobagginz
Дата 5.9.2013, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



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

если я правильно понял механизм работы этого мидлвера, с т.з. управления рисками, я бы не хотел огрести с такими system wide компонентами:
каждый запрос видимо будет обрабатываться каким-то обработчиком/хуком, и я уверен, что его можно написать так, что он будет
  • отлавливать запросы не принадлежащие API
  • не отлавливать запросы принадлежащие API
  • увеличивать время обработки ВСЕХ запросов системы
т.е. имеет потенциал ударить и по корректности и по быстродействию (судя по опыту с контекст процессорами, все это не очень приятно в отладке, особенно, если пишет код один человек, а другой отлаживает)

Поэтому, я бы (для начала) попробовал по методу KISS, т.е. попроще, шаблон - decorator в питоновом контексте.
декорировать можно:
  • методы explicitly, т.е. как "в книжке" о декораторах, прицеплять декоратор во views.py по методам (сработает, но труднее поддерживать такой код: каждый новый функционал твоего API надо будет не забыть декорировать)
  • в url.py, как напр. как тут
А после внедрения данного решения, я бы сделал экспериментик (POC) с джанговым миддлвером, т.е. сделал бы тестик-бенчмарк на всякий случай.
(Ессно, если время есть на такие игры)


SoWa, миддлвер случаем не приклеивается ко всем запросам ? (судя по схемке таки да, он вроде как контекст-процессор, но только в слоях запросов а не обработки шаблонов)

Это сообщение отредактировал(а) bilbobagginz - 5.9.2013, 18:24


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.