基于Django类的视图 - 直接url到类中的特定方法

时间:2015-06-18 14:11:57

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

我一直在使用基于函数的视图很长一段时间,但直到现在才使用基于类的视图。我当前的项目需要跨多个视图的很多公共代码,因此我正在探索基于类的视图,以便我可以使用继承。

我的要求是将url定向到类中的特定函数。类似于django admin可以做的事情。在Django admin中,我在从ModelAdmin继承的类中使用get_urls方法将url指向类方法。

def get_urls(self):
    try:
        from django.conf.urls.defaults import patterns, url

        urls = super(MyModelAdmin, self).get_urls() 

        my_urls = patterns('',
                       url(r'^myurl/(?P<obj_id>\d+)/$',
                           self.admin_site.admin_view(self.myFunction),
                           name="my_function"),
                         )

        return my_urls + urls
    except Exception, e:
        logger.error(e)

方法myFunction只调用views.py中的方法并传递请求对象和对象id。我的文档是here

是否可以使用基于类的视图执行类似的操作?从我的搜索到目前为止,我无法找到任何文档,显示将函数指针传递给as_view方法的可能性,我们可以采用admin_view方法。请指导我或指出正确的文件。

1 个答案:

答案 0 :(得分:1)

由于历史原因,管理视图与Django基于类的视图的其他视图非常不同,因此将实现从一个实现移动到另一个可能会很棘手。

常规CBV旨在连接到特定的url模式,它们不是为不同的视图分配不同的URL,因此实现get_urls方法并没有多大意义。