如何在 urls.py 中引用 Class 中的方法

How to reference to a Method inside a Class in urls.py

我有这个views.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})

这是我的 urls.py

from django.conf.urls import patterns, include, url
import views

urlpatterns = patterns('',
    url(r'^$', views.createReferenceTable),
)

但是当我转到 url、http://localhost:8000/create_reference_table/(我为每个应用程序使用不同的 urls.py)时,我收到此错误:

'module' object has no attribute 'createReferenceTable'

如果我将方法 createReferenceTable 移出 class,它工作正常。

我认为这是因为当我调用一个位于 class 中的方法时,它期望从这个 class 的实例中调用它,但因为我不是很有经验,我真的不知道怎么解决(不管是不是问题)。

谁能解释一下这是怎么回事,我该如何解决并防止下次发生?

提前致谢!

你可以在你的views里写ref = RefrenceTable(),在你的urls里写ref.createRefrenceTable,当然,from views import ref

您应该将方法设为静态:

class ReferenceTable(object):

    @staticmethod
    def createReferenceTable(request):
        ...

然后在urls.py中添加class名字:

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