我一直在使用基于函数的视图很长一段时间,但直到现在才使用基于类的视图。我当前的项目需要跨多个视图的很多公共代码,因此我正在探索基于类的视图,以便我可以使用继承。
我的要求是将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
方法。请指导我或指出正确的文件。
答案 0 :(得分:1)
由于历史原因,管理视图与Django基于类的视图的其他视图非常不同,因此将实现从一个实现移动到另一个可能会很棘手。
常规CBV旨在连接到特定的url模式,它们不是为不同的视图分配不同的URL,因此实现get_urls
方法并没有多大意义。