python代码简单模拟Java中的MVC设计
包括两个文件:
一、 mymvc.py
import tornado.ioloop import tornado.web #访问地址 http://127.0.0.1:9870/main?ywdm=06&num1=10&num2=200 class TestClassA: def sub(self,a,b): return a-b def add(self,a,b): return a+b def chen(self,a,b): return a*b class TestClassB: def sub(self,a,b): return a-b def add(self,a,b): return a+b def chen(self,a,b): return a*b sys_config={} sys_config["01"]=['mymvc','TestClassA','add'] sys_config["02"]=['mymvc','TestClassA','sub'] sys_config["03"]=['mymvc','TestClassA','chen'] sys_config["04"]=['mymvc','TestClassB','add'] sys_config["05"]=['mymvc','TestClassB','sub'] sys_config["06"]=['mymvc','TestClassB','chen'] class MainHandler(tornado.web.RequestHandler): def get(self): ywdm=self.get_argument('ywdm') num1=int(self.get_argument('num1').encode('utf-8')) num2=int(self.get_argument('num2').encode('utf-8')) message="hello !" print type(num2) if ywdm in sys_config: my_module_name=sys_config[ywdm][0] my_class_name=sys_config[ywdm][1] my_method_name=sys_config[ywdm][2] my_module = __import__(my_module_name) my_class = getattr(my_module,my_class_name) my_obj = my_class() my_method = getattr(my_obj,my_method_name) ret=my_method(num1,num2) print "ret:",ret #message = "ret data:::"+ret message="ywdm:"+ywdm+"-data:"+str(ret) items = ["Item 1", "Item 2", "Item 3"] self.render("test.html", title="My title", items=items,config_items=sys_config) #self.write(message) #self.finish() application = tornado.web.Application([(r"/main", MainHandler),]) if __name__ == "__main__": application.listen(9870) tornado.ioloop.IOLoop.instance().start()
二、页面模板html: test.html
<html> <head> <title>{{ title }}</title> </head> <body> <ul> {% for item in items %} <li>{{ escape(item) }}</li> {% end %} </ul> <ul> {% for item in config_items %} <li>{{ escape(config_items[item][0]) }} -{{ escape(config_items[item][1]) }} -{{ escape(config_items[item][2]) }} </li> {% end %} </ul> </body> </html>
执行: mymvc.py
然后浏览器输入:http://127.0.0.1:9870/main?ywdm=06&num1=10&num2=200
返回如下:
- Item 1
- Item 2
- Item 3
- mymvc -TestClassA -sub
- mymvc -TestClassA -chen
- mymvc -TestClassA -add
- mymvc -TestClassB -chen
- mymvc -TestClassB -add
- mymvc -TestClassB -sub