【发布时间】:2015-09-04 05:38:36
【问题描述】:
我使用基于函数的视图已经有一段时间了,但直到现在才使用基于类的视图。我当前的项目需要跨多个视图的大量通用代码,因此我正在探索基于类的视图,以便可以使用继承。
我的要求是将 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 方法一样。请指导我或指出正确的文档。
【问题讨论】:
-
我不确定我是否理解您想要实现的目标。您是否尝试在 Django 管理应用程序中使用基于类的视图?还是使用您自己的应用程序?如果是后者,那么调用
as_view方法应该可以完成工作。类似url(r'^myurl/(?P<obj_id>\d+)/$', MyClassBasedView.as_view(), name="my_function"),) -
@kaveh:感谢您的及时回复。我正在尝试在我自己的应用程序中使用基于类的视图。我只是将它与 admin 进行比较,因为我觉得 admin 与基于类的视图非常相似。关于您的建议,
TemplateView不就是这样吗?我打算将 url 映射到我的自定义类方法。 -
调用
as_view适用于所有CBV;它们都继承自django.views.generic.View类;您可以将它与从基类或其他提供的类继承的自定义类一起使用。
标签: python django django-class-based-views django-1.5