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不这样做。您最终将得到一个跨请求共享的实例,这是很少需要的,并且可能会导致线程安全问题。