Я заметил три основных пути веб-вручение запроса соглашения о платформах Python: декораторы, классы контроллера с методами для отдельных запросов и классы запроса с методами для ДОБИРАЮТСЯ/POST.
Мне любопытно на предмет достоинств этих трех подходов. Есть ли главные преимущества или недостатки к какому-либо из этих подходов? Для фиксации идей вот, три примера.
Бутылка использует декораторов:
@route('/')
def index():
return 'Hello World!'
Опоры используют классы контроллера:
class HelloController(BaseController):
def index(self):
return 'Hello World'
Торнадо использует классы обработчика запросов с методами для типов:
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
Какой стиль является лучшей практикой?
На самом деле для каждого из трех перечисленных вами методов есть своя причина, характерная для каждого проекта.
Теперь, сказав все это, вы должны знать, что вы всегда можете переопределить поведение фреймворка по умолчанию. Например, я написал MethodDispatcher для Tornado, который заставляет его работать более похоже на Pylons (ну, я имел в виду CherryPy, когда писал его). Это немного замедляет работу Tornado (и немного увеличивает объем памяти) из-за наличия одного большого RequestHandler (по сравнению с множеством маленьких), но это может уменьшить количество кода в вашем приложении и сделать его немного легче для чтения (По моему предвзятому мнению, конечно =)).
Различные платформы пытаются достичь максимальной производительности с помощью наилучшего кода (для записи и чтения). Каждый из них использует разные стратегии, основанные на MVC или MVT.
То, на чем вы сосредоточены, вероятно, зависит от вашего личного вкуса. И мой ответ тоже. Я очень стараюсь избегать какой-либо священной войны, потому что могут быть веские технические аргументы, о которых я просто не знаю.
Но я лично предпочитаю хранить маршрутизацию отдельно от контроллера (представление django) и отдельно от него шаблоны. Это упрощает повторное использование контроллеров. Да, я пользователь Django.
Таким образом, я действительно не большой поклонник декораторов бутылки или упаковки вещей в большие, громоздкие классы. Раньше я был разработчиком ASP.NET, но Django освободил меня.