Python getattr,如何解决django模型的构造函数

时间:2011-03-24 14:20:18

标签: python django

在下面的代码中,我渲染人物模型。而不是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'}))

3 个答案:

答案 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