Шаблон контроллера представления модели

Контроллер представления модели - наиболее часто используемый шаблон проектирования. Разработчикам легко реализовать этот шаблон проектирования.

Ниже приведена базовая архитектура контроллера представления модели.

Давайте теперь посмотрим, как работает структура.

Модель

Он состоит из чистой логики приложения, которое взаимодействует с базой данных. Он включает в себя всю информацию для представления данных конечному пользователю.

Посмотреть

Представление представляет файлы HTML, которые взаимодействуют с конечным пользователем. Он представляет данные модели пользователю.

Контроллер

Он действует как посредник между представлением и моделью. Он слушает события, инициированные представлением и моделью запросов.

Код Python

Давайте рассмотрим базовый объект под названием «Человек» и создадим шаблон проектирования MVC.

Model.py

import json

class Person(object):
   def __init__(self, first_name = None, last_name = None):
      self.first_name = first_name
      self.last_name = last_name
   #returns Person name, ex: John Doe
   def name(self):
      return ("%s %s" % (self.first_name,self.last_name))
		
   @classmethod
   #returns all people inside db.txt as list of Person objects
   def getAll(self):
      database = open('db.txt', 'r')
      result = []
      json_list = json.loads(database.read())
      for item in json_list:
         item = json.loads(item)
         person = Person(item['first_name'], item['last_name'])
         result.append(person)
      return result

Он вызывает метод, который выбирает все записи таблицы Person в базе данных. Записи представлены в формате JSON.

Посмотреть

Он отображает все записи, выбранные в модели. Просмотр никогда не взаимодействует с моделью; Контроллер выполняет эту работу (взаимодействует с моделью и представлением).

from model import Person
def showAllView(list):
   print 'In our db we have %i users. Here they are:' % len(list)
   for item in list:
      print item.name()
def startView():
   print 'MVC - the simplest example'
   print 'Do you want to see everyone in my db?[y/n]'
def endView():
   print 'Goodbye!'

Контроллер

Контроллер взаимодействует с моделью через getAll() метод, который извлекает все записи, отображаемые конечному пользователю.

from model import Person
import view

def showAll():
   #gets list of all Person objects
   people_in_db = Person.getAll()
   #calls view
   return view.showAllView(people_in_db)

def start():
   view.startView()
   input = raw_input()
   if input == 'y':
      return showAll()
   else:
      return view.endView()

if __name__ == "__main__":
   #running controller function
   start()