【发布时间】:2011-08-17 16:04:19
【问题描述】:
我正在使用新的 Django 表单向导工具。它将在下一个 Django 1.4 中发布,但你可以在这里找到它:https://github.com/stephrdev/django-formwizard
我想为所有向导进程创建一个单例视图类。
这是我的代码:
class submit(object):
instance = None
def __new__(cls, request, *args, **kwargs):
if not cls.instance:
cls.instance = super(submit, cls).__new__(cls)
cls.form = SubmitStoryWizard.as_view([SubmitStoryForm1, SubmitStoryForm2, SubmitStoryForm3, SubmitStoryForm4])
return cls.instance(request, *args, **kwargs)
def __init__(self):
pass
def __call__(self, request, *args, **kwargs):
return self.form(request)
问题是 WizardView 继承自 TemplateView 所以as_view 方法返回一个函数。所以,在这一行:
cls.form = SubmitStoryWizard.as_view([SubmitStoryForm1, SubmitStoryForm2, SubmitStoryForm3, SubmitStoryForm4])
就像我在类变量中存储一个函数一样。因此,在__call__ 方法中,当我调用 self.form 函数时,Python 会自动将类的引用作为第一个参数添加。 这是我不想要的。
我该如何解决?有什么想法吗?
对不起我的英语:S
提前致谢,
您好!
【问题讨论】: