我有这段代码,我想使用 app 参数生成代码而不是复制它。
if app == 'map':
try:
from modulo.map.views import map
return map(request, *args, **kwargs)
except ImportError:
pass
elif app == 'schedule':
try:
from modulo.schedule.views import schedule
return schedule(request, *args, **kwargs)
except ImportError:
pass
elif app == 'sponsors':
try:
from modulo.sponsors.views import sponsors
return sponsors(request, *args, **kwargs)
except ImportError:
pass
elif app == 'streaming':
try:
from modulo.streaming.views import streaming
return streaming(request, *args, **kwargs)
except ImportError:
pass
你有什么想法吗?
谢谢
请您参考如下方法:
我更愿意使用 dispatch-dictionary 惯用语,编写类似...的代码:
import sys
dispatch = { 'map': ('modulo.map.views', 'map'),
'schedule': ('modulo.schedule.views', 'schedule_day'),
...etc etc.. }
if app in dispatch:
modname, funname = dispatch[app]
try: __import__(modname)
except ImportError: pass
else:
f = getattr(sys.modules[modname], funname, None)
if f is not None:
return f(request, *args, **kwargs)
不确定您认为“代码生成”会给您带来什么,使它比这种方法更可取。
