Python Django基于类的视图-将url直接指向类中的特定方法
我已经使用基于函数的视图很长一段时间了,但直到现在才使用基于类的视图。我当前的项目需要跨多个视图编写大量通用代码,因此我正在探索基于类的视图,以便使用继承 我的要求是将url指向类中的特定函数。类似于可以在django admin上执行的操作。在Django admin中,我在从ModelAdmin继承的类中使用了Python Django基于类的视图-将url直接指向类中的特定方法,python,django,django-class-based-views,django-1.5,Python,Django,Django Class Based Views,Django 1.5,我已经使用基于函数的视图很长一段时间了,但直到现在才使用基于类的视图。我当前的项目需要跨多个视图编写大量通用代码,因此我正在探索基于类的视图,以便使用继承 我的要求是将url指向类中的特定函数。类似于可以在django admin上执行的操作。在Django admin中,我在从ModelAdmin继承的类中使用了get\u url方法,将url指向类方法 def get_urls(self): try: from django.conf.urls.defaults im
get\u url
方法,将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)
def get_url(self):
尝试:
从django.conf.url.defaults导入模式,url
url=super(MyModelAdmin,self).get_url()
我的URL=模式(“”,
url(r'^myurl/(?P\d+/$),
self.admin\u site.admin\u视图(self.myFunction),
name=“my_函数”),
)
返回我的URL+URL
除例外情况外,e:
记录器错误(e)
方法myFunction
只调用views.py中的一个方法,并传递请求对象和对象id。I文档是
是否可以对基于类的视图执行类似的操作?从我的搜索到目前为止,我找不到任何文档显示有可能将函数指针传递到
as\u view
方法,我们可以使用admin\u view
方法。请指导我或向我指出正确的文档。由于历史原因,admin视图与Django的其他基于类的视图非常不同,因此将实现从一个视图移动到另一个视图可能很棘手
常规CBV旨在连接到特定的url模式,它们的设计目的不是将不同的url发送到不同的视图,因此实现
get\u url
方法实际上没有意义。我不确定是否理解您试图实现的目标。您是否试图在Django admin应用程序中使用基于类的视图?还是用你自己的应用程序?如果是后者,那么调用as_view
方法应该可以完成这项工作。类似于url(r'^myurl/(?P\d+)/$,MyClassBasedView.as_view(),name=“my_function”),)
@kaveh:感谢您的及时回复。我正在尝试在我自己的应用程序中使用基于类的视图。我只是将其与admin进行比较,因为我觉得admin与基于类的视图非常相似。关于你的建议,这不是TemplateView
的方式吗?我打算将URL映射到我的自定义类方法;它们都继承自django.views.generic.View
类;您可以将它用于从基类或其他提供的类继承的自定义类。感谢@Alasdair的回复。