Non riesco a capire il modello MVC. Ho lavorato con framework MVC come ASP.NET MVC e Django, ma la struttura del progetto è pressoché obbligata, quindi non ha aiutato a capire come costruire le mie app basate su questo modello. Per chiarire le cose ho deciso di scrivere l'esempio più semplice della mia comprensione di MVC (programma di console in Python) e capire se c'è qualcosa di sbagliato.MVC l'esempio più semplice
|- program:
|—— controller.py
|—— model.py
|—— view.py
|—— db.txt #simulates database
Quindi questa è la mia struttura di base. Ciò che questo programma farà è visualizzare tutte le persone che si trovano in db.txt. Io uso db.txt (json) per simulare il database reale.
controller.py
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()
view.py
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!'
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
quindi questo è il wh scenario it l'utente desidera vedere tutte le persone nel db:
Questo approccio è corretto?