2015-11-18 37 views
1

美好的一天!(GCBV)如何调用自定义方法发布博客(UpdateView)

旁边的Java我试图学习一些Python/Django,因为我工作的公司也将使用Django。但是,我想弄清楚如何使用基于泛型类的视图。我希望有人能给我一些信息来指导我正确的方向来解决我的问题。

我有一个包含CRUD(创建,读取,更新,删除)与GCBV(通用类基础视图)能力的小型博客应用程序。在详细信息视图我有一个链接发布:

{% url 'blogs:publish' blog.pk %}

,我想用那样:

url(r'^(?P[0-9]+)/publish/$', xxx, name='publish')

我只是无法得到它的工作。我试图(和simular尝试)中创建一个名为发布的更新(更新视图)类中的方法(个体经营,** kwargs):,使URL模式称之为:

url(r'^(?P[0-9]+)/publish/$', views.Update.publish(), name='publish')

这显然没有按没有工作,否则你现在不会阅读这篇文章;)我一直在阅读一些文档/谷歌/等,但大多数是基于功能或教程在CRUD后停止。你能把我推向正确的方向吗(提示/清楚的教程/例子)还是我解释错误的选择?提前致谢!

回答

1

UpdateView用于更新,但您可以查看CreateView。它用于创建对象。

此外,您还需要明白,您无法调用某种方法,因为它很难想象它是如何工作的。 GCBV只是已经编写过的方法的序列,使您的生活更轻松。您可以覆盖GCBV的基本方法并创建自己的,然后可以在视图中使用,但不能在URL中调用它们。

+0

谢谢您的回复。当创建博客时,它始终未发布,详细信息视图显示发布链接。我怎样才能让该链接正确发布博客? – Nrzonline

+1

@Nrzonline,你需要做的就是创建一个链接并映射一个'url',它将捕获'object'的'pk'。在此之后,您需要编写一个视图,该视图使用在url中捕获的'pk'获取对象实例,并更新对象的字段'object.published = True',之后您只需保存该对象并返回'HttpResponseRedirect'。在这种情况下使用功能基础视图是可以的。如果您不想重新加载页面,也可以使用ajax,但这取决于您想要执行的操作。 – pythad

+0

谢谢。对我来说,感觉就像我不得不将它包装到GCBV中,我实际上不知道为什么。无论如何,它现在正在工作。再次感谢! – Nrzonline