【发布时间】:2009-12-08 11:44:23
【问题描述】:
我在某处见过这样的 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
如何在此设置中制作正确的 urlpatterns?
【问题讨论】: