在下面的代码中,我渲染人物模型。而不是person()我想使用getattr来使用变量模型名称。像getattr('人',????)之类的东西 下面的代码是我的应用引擎代码的简化版本。
class person(djangoforms.ModelForm):
name = djangoforms.forms.CharField(max_length=24, min_length=2, label = 'Name', required = True)
class MainPage(webapp.RequestHandler):
def get(self):
path = os.path.join(os.path.dirname(__file__), 'templates', 'person.html')
self.response.out.write(template.render(path, {'form' : person(), 'name' : 'voscausa'}))
答案 0 :(得分:0)
python类的构造函数名为__init__
,因此请使用getattr(YourClass, '__init__')
。
然而,这可能不是你想要的。请参阅Does python have an equivalent to Java Class.forName()? - 这可能是您问题的解决方案。
答案 1 :(得分:0)
我用过
get_class('main.person')()
而不是
get_class('main.person')
获取
self.response.out.write(template.render(path, {'form' : get_class('main.person')(), 'name' : 'voscausa'}))
答案 2 :(得分:0)
try:
globals()[model_name]()
except KeyError:
print "hey, you forgot to define %s"%model_name