是否可以使用基于类的视图而不是基于函数的视图w?

时间:2018-09-26 07:46:09

标签: python django django-class-based-views wagtail

我仍在努力将django wagtail集成到现有项目中。

我只在我的博客页面上使用w。并且我想创建一个表单以从我的w页面上为我的博客创建新帖子。我创建此方法的方法是使用routablepage。这是我的一些代码

我使用this作为参考

models.py

class BlogIndex(RoutablePageMixin, Page):
    ...

    @route(r'^send-post/$', name='send_posts')
    def submit(self, request):
        from .views import submit_news
        return submit_news(request, self)
    ...

class BlogPage(Page):
    ...

forms.py

class NewsPageForm(forms.ModelForm):
    ...

views.py

def submit_blog(request, blog_index):
    ...

是否可以将Submit_blog函数更改为create view? 因为我之前曾经尝试过创建视图并尝试类似的操作,但是它不起作用,因为它将在models.py

中调用BlogPage页面是递归的

models.py

class BlogIndex(RoutablePageMixin, Page):
...

    @route(r'^send-post/$', BlogCreate.as_view(), name='send_posts')

views.py

class BlogCreate(CreateView):
...

非常感谢

1 个答案:

答案 0 :(得分:0)

我认为您已经快到了,但是@route需要修饰视图函数(而不是将视图作为修饰符参数传递)。

尝试一下:

class BlogIndex(RoutablePageMixin, Page):
...
    @route(r'^send-post/$', name='send_posts'):
    def submit(self, request):
        blog_create_view = BlogCreate.as_view()

        return blog_create_view(request, self)

代替:

class BlogIndex(RoutablePageMixin, Page):
...

    @route(r'^send-post/$', BlogCreate.as_view(), name='send_posts')