带有基于类的泛型视图的Django表单前缀

带有基于类的泛型视图的Django表单前缀,django,django-forms,django-generic-views,Django,Django Forms,Django Generic Views,如何在Django 1.3中使用新的基于类的泛型视图设置form prefix关键字?设置前缀可防止呈现的HTML中出现重复id。这是为forms API记录的 由于我使用AJAX加载了几个不同的表单,因此我遇到了重复标记的问题。我看到了您的问题!您正在尝试使用FormView,它允许您指定form\u class,但不能指定前缀 我没有尝试过这个方法,但我建议将FormView或您正在使用的任何东西子类化,并重写get\u form\u kwargs方法以添加前缀 你可以这样做: class

如何在Django 1.3中使用新的基于类的泛型视图设置form prefix关键字?设置前缀可防止呈现的HTML中出现重复id。这是为forms API记录的


由于我使用AJAX加载了几个不同的表单,因此我遇到了重复标记的问题。

我看到了您的问题!您正在尝试使用
FormView
,它允许您指定
form\u class
,但不能指定前缀

我没有尝试过这个方法,但我建议将
FormView
或您正在使用的任何东西子类化,并重写
get\u form\u kwargs
方法以添加前缀

你可以这样做:

class MyFormView(FormView):
    form_prefix = None

    def get_form_kwargs(self):
        kwargs = super(FormView, self).get_form_kwargs()
        if self.form_prefix:
            kwargs.update({'prefix': self.form_prefix})
        return kwargs
然后,我想,您将能够在urlconf的
MyFormView.as\u view
参数中添加
form\u prefix


正如我所说,我还没有尝试过这个,但它可能值得一试——让我知道它是否有效

我在django中打开了一张票据,附带了一个修改FormMixin的补丁,以使FormView按照您的意愿运行


请澄清您的问题。第一句话对我来说没有意义。我的意思是形式和观点是分开的。“使用视图设置表单前缀”是什么意思?表单是python类。MyForm(prefix='myform1')是设置关键字的一个示例。如链接文档中所述。谢谢Duncan。是的,这个有效。这正是我想要的。您还可以重写“get_prefix”方法;-)或者您也可以设置“prefix”类属性,如果它是非动态的。非常感谢。以下是指向文档的链接: