MVC ist das einfachste BeispielPython

Python-Programme
Anonymous
 MVC ist das einfachste Beispiel

Post by Anonymous »

Ich habe Schwierigkeiten, das MVC-Muster zu verstehen. Ich habe mit MVC-Frameworks wie ASP.NET MVC und Django gearbeitet, aber die Projektstruktur dort ist ziemlich erzwungen, sodass es nicht wirklich hilfreich war zu verstehen, wie ich meine eigenen Apps basierend auf diesem Muster erstellen kann. Um die Dinge zu klären, habe ich beschlossen, das einfachste Beispiel meines Verständnisses von MVC (Konsolenprogramm in Python) zu schreiben und herauszufinden, ob etwas nicht stimmt.

Code: Select all

|- program:
|—— controller.py
|—— model.py
|—— view.py
|—— db.txt #simulates database
Das ist also meine Grundstruktur. Dieses Programm zeigt alle Personen an, die sich in db.txt befinden. Ich verwende db.txt(json), um die tatsächliche Datenbank zu simulieren.

controller.py

Code: Select all

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

Code: Select all

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

Code: Select all

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
Das ist also das Szenario, in dem der Benutzer alle Personen in der Datenbank sehen möchte:
Image


Ist dieser Ansatz richtig?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post