如何在urls.py中引用类中的Method

时间:2015-03-11 02:36:27

标签: python django django-urls

我有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),
)

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

'module' object has no attribute 'createReferenceTable'

如果我将方法createReferenceTable移出课堂,它可以正常工作。

我认为这是因为我正在调用一个类中的方法,它期望从这个类的实例调用它,但由于我不是很有经验,我真的不知道如何排序它(无论是否是问题)。

有人可以解释发生了什么,以及如何解决问题并防止下次发生?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您应该将方法设为静态:

class ReferenceTable(object):

    @staticmethod
    def createReferenceTable(request):
        ...

然后在urls.py中添加班级名称:

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

答案 1 :(得分:-1)

您可以在观看中写下ref = RefrenceTable(),然后在网址中写下ref.createRefrenceTablefrom views import ref