Skip to main content
 首页 » 编程设计

django之Python:如何执行生成的代码

2025年05月04日29开发

我有这段代码,我想使用 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) 

不确定您认为“代码生成”会给您带来什么,使它比这种方法更可取。