2010-01-29 72 views
1

我在使用表单向导时遇到了一些问题,也许有人可以说明一些问题。根据process_step方法中的文档字符串:我可以“动态改变self.form_list”。所以,根据我的项目需要,我将表单附加到form_list。我追加的表格包含问题和答案:http://dpaste.com/hold/152201/Django FormWizard动态改变form_list

问题是,当2人同时击中形式向导时,他们开始看到对方的问题和答案。我想我不明白process_step如何表明我可以动态地改变form_list,这样做时我正在修改另一个用户的表单列表。 form_list是访问者在浏览urls.py中定义的formwizard url时的共享对象吗?我在apache2/prefork/worker/mod_wsgi下看到了这个问题,并且在运行runserver的应用程序的时候。

+0

几乎闻起来像会话碰撞 – 2010-01-29 18:47:52

+0

我越读动态/并发形式会话背后的问题,我认为越多,好或坏,这是一个形式向导问题。 – 2010-01-29 20:54:16

回答

2

你如何使用FormWizard?如果你把它放在urls.py中,就像文档说的那样它可以被缓存,我有这个问题几次。只要把它像一个观点:

def my_view(request): 
    return FormWizard(request) 

UPDATE:从实际

def registration_wizard(request, template_name=None): 
    rw = RegistrationWizard([RegistrationForm, 0]) 
    #hack formwizard to replace default template 
    if template_name: 
     rw.get_template = lambda x: template_name 

    return rw(request) 

这里与动态form_list一个FormWizard子类,[RegistrationForm,0],因为需要RegistrationWizard实例如果只有一种形式在创建时,向导将不会获取form_list函数。模板的事情是不言自明的

+0

感谢德米特里的回应。我将我的FormWizard放在urls.py中。你有没有将FormWizard放在视图中的工作示例?我确实按照http://www.djangosnippets.org/snippets/1833/上提供的示例获得了您的建议,但我的问题似乎仍然存在。 – 2010-01-30 19:14:12

+0

更新了我的回答 – 2010-01-30 20:16:29

+0

我正在尽我所能解决我的问题。我喜欢你的建议(我喜欢在视图中定义向导而不是urls.py),但是我仍然遇到问题。我需要做一些调试,以确保它不是我搞砸的东西。我会保持更新,并希望在答案旁边放上一个绿色的复选标记。 – 2010-01-31 00:14:06