我有这个代码,我想使用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
Run Code Online (Sandbox Code Playgroud)
你有什么主意吗 ?
谢谢
我更喜欢使用dispatch-dictionary idiom,编码类似......:
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)
Run Code Online (Sandbox Code Playgroud)
不确定你认为"代码生成"会让你更喜欢这种方法.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |