如何组合Django的“LoginRequiredMixin”和表单工具“FormPreview”?

How do I combine Django's ‘LoginRequiredMixin’ and Form Tools' ‘FormPreview’?

LoginRequiredMixin在其他基于类的视图上工作得很好。另外,表单工具FormPreview也可以正常工作。但当我试图同时使用这两种方法时,LoginRequiredMixin就被忽略了。

如果我使用表单工具和django文档中最基本的示例,则情况也是如此。

有两件事我觉得很奇怪(但这不一定是原因):

  • "这个混合应该在继承列表的最左边。"这听起来像是有一些内部黑客,如果有人做了不规则的事情,就会破坏它。没有解释为什么。
  • 表单工具视图应该自己调用,而不是方法.as_view(),这又是不标准的。
  • 小精灵

    这是虫子吗?我能做什么?


    FormPreview不是一个基于类的通用视图,因此不能将它与LoginRequiredMixin之类的mixin一起使用。

    在URL模式中包含表单预览实例时,可以使用login_required修饰符:

    1
    2
    3
    4
    5
    from django.contrib.auth.decorators import login_required

    url_patterns = [
        url(r'^form-handler/$', login_required(MyFormPreview(SomeModelForm))),
    ]