標籤:
MVC中的M已經介紹完了,C和V都是使用者代碼,先看幾個工具類:
A)全域變數類,使用者定義全域變數和一個用於產生普通對象的類型:
gl_A=1gl_B=‘a‘class Obj: def __init__(self): self.Obj=self
如果需要,大家可以定義自己的全域性變數。
B)OsHelper.用於動態載入模組,擷取類型
import impimport inspectimport uuid#載入控制模組和類,讀取檔案,擷取GUIDclass OsHelper: @staticmethod def LoadModule(controllerName): return imp.load_source(controllerName,controllerName+‘.py‘) @staticmethod def LoadClass(module,classname,ignorecase=True): if ignorecase : theMembers = inspect.getmembers(module) for theM in theMembers: if theM[0].upper()==classname.upper(): return theM[1] else: return getattr(module,classname) @staticmethod def GetGuid(): return uuid.uuid1().__str__().replace(‘-‘,‘‘) @staticmethod def ReadFile(filepath,AEncoding=‘utf-8‘): if AEncoding==None: AEncoding=‘utf-8‘ theFile = open(file=filepath,encoding=AEncoding) try: return theFile.read() finally: theFile.close()
C)HtmlHelper模組,主要提供html處理的類。這裡提供了一個自動根據表單域給實體賦值的方法和Cookie處理的類。大家可以根據自己的需要增加自己的方法。
from os import environimport cgi, cgitbfrom ListAttr import ObjOptclass HtmlTools: #自動根據表單域給對象賦值 @staticmethod def TryUpdate(obj,form): theProperties = ObjOpt.GetPropertyNames(obj) theObjName = ObjOpt.GetClassName(type(obj)) theRet={} if theProperties != None: for theP in theProperties: try: theVal =form.getvalue(theP) if theVal!=None: setattr(obj,theP,theVal) else: theVal =form.getvalue(theObjName+‘.‘+theP) if theVal!=None: setattr(obj,theP,theVal) if theVal!=None: theRet[theP] = theVal except Exception: return theRet return theRet #擷取Cookie資訊,字典方式返回. @staticmethod def GetCookies(Environ): theRet={} theCookieStr=Environ.get(‘HTTP_COOKIE‘) if theCookieStr!=None: for cookie in theCookieStr.split(";"): (key, value ) = cookie.split(‘=‘) theRet[key]=value return theRet
一個簡單額Python MVC架構(3)