我在某处找到了像这样的urls.py结构:
from project.f import SomeClass
urlpatterns = patterns('',
(r'^url/$', SomeClass()),
)
http://docs.djangoproject.com/en/dev/topics/http/urls/我无处可去 找出这意味着什么,通常一个条目是这样的:
(r'^url/(?P<some_id>\d+)/$', 'project.views.some_view'),
有人可以向我解释一下如何只使用SomeClass()吗?
SomeClass()构造在没有参数的情况下有效,但我想这样做 在那里有参数,所以我做了这样的事情:
(r'^url/(?P<some_id>\d+)/$', SomeClass()),
并修改了SomeClass:
class SomeClass(OtherClass):
def items(self):
return MyItems.objects.all()
为:
class SomeClass(OtherClass):
def items(self, some_id):
return MyItems.objects.filter(pk=some_id)
现在访问/ url /我得到:
TypeError at /url/12/
items() takes exactly 2 arguments (1 given)
所以看起来没有传递参数。如果我尝试输入urls.py:
(r'^url/(?P<some_id>\d+)/$', SomeClass(some_id)),
我明白了:
NameError at /url/12/
name 'some_id' is not defined
如何在此设置中制作正确的urlpatter?
答案 0 :(得分:5)
所有urlconf都关心的是视图的值是可调用的。只要类定义了__call__
方法,Callables就可以是类实例。这种方法需要接受来自网址的参数 - 你没有解释你的“项目”方法是什么,但它可能是从__call__
调用的。