Я где-то видел такую конструкцию 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()
to:
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
Как сделать правильные URL-шаблоны в этой настройке?