Python 如何在URL.py中引用类内的方法

Python 如何在URL.py中引用类内的方法,python,django,django-urls,Python,Django,Django Urls,我有这个视图。py from django.shortcuts import render from forms import ReferenceTableForm class ReferenceTable(object): def createReferenceTable(request): form = ReferenceTableForm() return render(request, "DataImport/createReferenceTab

我有这个
视图。py

from django.shortcuts import render
from forms import ReferenceTableForm

class ReferenceTable(object):
    def createReferenceTable(request):
        form = ReferenceTableForm()
        return render(request, "DataImport/createReferenceTable.html", {'form': form})
from django.conf.urls import patterns, include, url
import views

urlpatterns = patterns('',
    url(r'^$', views.createReferenceTable),
)
这是我的
url.py

from django.shortcuts import render
from forms import ReferenceTableForm

class ReferenceTable(object):
    def createReferenceTable(request):
        form = ReferenceTableForm()
        return render(request, "DataImport/createReferenceTable.html", {'form': form})
from django.conf.urls import patterns, include, url
import views

urlpatterns = patterns('',
    url(r'^$', views.createReferenceTable),
)
但是当我转到我的url时,
http://localhost:8000/create_reference_table/
(我正在为每个应用程序使用不同的
url.py
),我收到以下错误:

'module' object has no attribute 'createReferenceTable'
如果我将方法
createReferenceTable
移出类,它就可以正常工作

我认为这是因为当我调用一个类中的方法时,它希望从这个类的实例中调用它,但由于我不是很有经验,我真的不知道如何解决它(无论是不是问题)

有人能解释一下发生了什么事,我怎样才能解决它,防止下次再发生吗


提前谢谢

您可以在视图中写入
ref=referencetable()
,也可以在URL中写入
ref.createreferencetable
,当然,
从视图导入ref
您应该将该方法设置为静态:

class ReferenceTable(object):

    @staticmethod
    def createReferenceTable(request):
        ...
然后在
url.py
中添加类名:

url(r'^$', views.ReferenceTable.createReferenceTable),

尝试使用此url查看它
http://localhost:8000/
或者您可以将url分配给
url(r'^create\u reference\u table/$,views.createReferenceTable),
它将不起作用,因为正如我所说,我为每个应用程序使用不同的url.py。在主url.py中,我有
url(r'^create\u reference\u table/',include('DataImport.url'))
。我这样做了,但随后我得到了错误:
'ReferenceTable'对象没有属性“META”
我将
ref=ReferenceTable()
放在
视图.py
的末尾,因为您不是成员方法,所以应该在参数中添加self,或者使用@staticmethodDon不这样做。您最终将得到一个跨请求共享的实例,这是很少需要的,并且可能会导致线程安全问题。