class Web(object):
def bbs(self):
return "<h1>bbs</h1>"
def news(self):
return "<h1>news</h1>"
def music(self):
return "<h1>music</h1>"
def movie(self):
return "<h1>movie</h1>"
# 假设下面还有50个
def run():
flask = Web()
# 用户输入url地址: http://www.baidu.com/news
url = input('url:').split('/')[-1] # 取拆分后最后一个字符串 例如:news
if hasattr(flask, url): # 判断是否有方法url
return getattr(flask, url)() #获得方法返回值
else:
return '404'
if __name__ == '__main__':
while True:
print(run())
我们还可以运用模块完成:
1)新建一个lib的python package
lib内新建3个模块:
def index():
return 'bbs index'
def login():
return "bbs login"
def logout():
return "bbs logout"
def index():
return 'music index'
def login():
return "music login"
def logout():
return "music logout"
news,py
def index():
return 'news index'
def login():
return "news login"
def logout():
return "news logout"
init.py
from lib.bbs import *
from lib.news import *
from lib.music import * #包里只能最后一个模块生效
2)新建一个模块
def run():
# 用户输入url地址: www.baidu.com/music/index
# 用户输入url地址: http://www.baidu.com/bbs/login
modules, func = input('url:').split('/')[-2:] # 获取目录的倒数两个, 即 music index
print(modules, func) #modules=music func=index
# 倒入一个包含变量的模块名, 其中obj就是导入模块的别名
obj = __import__('lib.' + modules)
print(obj) #<module 'lib' from '/home/kiosk/Documents/python/python1230/lib/__init__.py'>
if hasattr(obj, func):
return getattr(obj, func)()
else:
return '404:页面找不到'
if __name__ == '__main__':
while True:
print(run()) #music index