Нагрузка на сервер; Часто, необходимость поддерживать несколько интерфейсов; Сейчас в чистом виде почти не встречается; Передача большего объема данных.
или контроллер, и используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются контроллером и он же отвечает за перерисовку представления, если это необходимо.
произошли изменения, а представления, которые заинтересованы в оповещении, подписываются на эти сообщения. Это позволяет сохранить независимость модели как от контроллера, так и от представления.
O h t t p s : / / p y p i . p y t h o n . o r g / p a c k a g e s / s o u r c e / v / v i r t u a l e n v / v i r t u a l e n v - 1 . 1 0 . 1 . t a r . g z $ t a r x v f z v i r t u a l e n v - 1 . 1 0 . 1 . t a r . g z $ c d v i r t u a l e n v - 1 . 1 0 . 1 $ [ s u d o ] p y t h o n s e t u p . p y i n s t a l l Создадим виртуальное окружение и активируем его: $ v i r t u a l e n v E N V $ s o u r c e b i n / a c t i v a t e Прочесть подробнее
m f l a s k i m p o r t F l a s k a p p = F l a s k ( _ _ n a m e _ _ ) @ a p p . r o u t e ( ' / ' ) d e f i n d e x ( ) : r e t u r n ' h e l l o w o r l d ' i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : a p p . r u n ( ) Запустим сервер (сервер запустился на порту 5000): $ p y t h o n a p p . p y $ * R u n n i n g o n h t t p : / / 1 2 7 . 0 . 0 . 1 : 5 0 0 0 /
o m f l a s k i m p o r t F l a s k a p p = F l a s k ( _ _ n a m e _ _ ) Описываем функцию, которая в данном примере является контроллером и обрабатывает запросы на '/' @ a p p . r o u t e ( ' / ' ) d e f i n d e x ( ) : r e t u r n ' h e l l o w o r l d '
u t e ( ' / n e w s ' ) d e f n e w s ( ) : n e w s = [ { ' t i t l e ' : ' f o o ' , ' d e s c r i p t i o n ' : ' b a r ' } ] r e t u r n r e n d e r _ t e m p l a t e ( ' n e w s . h t m l ' , n e w s = n e w s )
e w s ( o b j e c t ) : i d n = N o n e t i t l e = ' ' d e s c r i p t i o n = ' ' d e f _ _ i n i t _ _ ( s e l f , i d n , t i t l e , d e s c r i p t i o n ) : s e l f . i d n = i d n s e l f . t i t l e = t i t l e s e l f . d e s c r i p t i o n = d e s c r i p t i o n @ s t a t i c m e t h o d d e f f i n d ( ) : # F i x t u r e s a r e p l a c e d i n t h e s a m e f i l e . # R e m o v e d f o r p u r p o s e o f r e a d i n g r e t u r n f i x t u r e s
o u t e ( ' / n e w s ' ) d e f n e w s ( ) : n e w s _ l i s t = N e w s . f i n d ( ) r e t u r n r e n d e r _ t e m p l a t e ( ' n e w s . h t m l ' , n e w s = n e w s _ l i s t )
r o u t e ( ' / n e w s / < i n t : n e w s _ i d > ' ) d e f n e w s _ i t e m ( n e w s _ i d ) : n e w s = N e w s . f i n d _ o n e ( n e w s _ i d ) r e t u r n r e n d e r _ t e m p l a t e ( ' s i n g l e _ n e w s . h t m l ' , n e w s = n e w s ) Очевидно ничего не заработает :)