【问题标题】:Django form prefix with class based generic view带有基于类的通用视图的 Django 表单前缀
【发布时间】:2011-11-08 15:24:43
【问题描述】:

如何在 Django 1.3 中使用新的基于类的通用视图设置表单前缀关键字?设置前缀可防止呈现的 HTML 中出现重复的 id。这是针对表单 API 记录的 here

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

【问题讨论】:

  • 请澄清您的问题。第一句话对我来说没有意义。我的意思是表单与视图是分开的。 “设置带有视图的表单前缀”是什么意思?
  • 表单是一个python类。 MyForm(prefix='myform1') 将是设置关键字的示例。如链接文档中所述。

标签: django django-forms django-generic-views


【解决方案1】:

我看到了你的问题!您正在尝试使用FormView,它允许您指定form_class,但不能指定前缀。

我还没有尝试过,但我建议继承 FormView 或任何你正在使用的,并覆盖 get_form_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

然后,我认为,您可以将 form_prefix 放入 urlconf 中 MyFormView.as_view 的参数中。

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

【讨论】:

  • 谢谢邓肯。是的,这行得通。这正是我想要的。
  • 你也可以重写 'get_prefix' 方法 ;-) 或者你也可以设置 'prefix' 类属性,如果它是非动态的。
【解决方案2】:

我在 django 中打开了一张票,并附加了一个补丁,它修改了 FormMixin,以使 FormView 的行为如你所愿。

https://code.djangoproject.com/ticket/18872

【讨论】:

猜你喜欢
  • 2011-09-18
  • 2018-03-12
  • 1970-01-01
  • 2015-07-26
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多