Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django基于类的视图-将url直接指向类中的特定方法_Python_Django_Django Class Based Views_Django 1.5 - Fatal编程技术网

Python Django基于类的视图-将url直接指向类中的特定方法

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

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

我的要求是将url指向类中的特定函数。类似于可以在django admin上执行的操作。在Django admin中,我在从ModelAdmin继承的类中使用了
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的回复。