【发布时间】:2015-03-12 19:48:34
【问题描述】:
我在 Django 上有一个带有 TastyPie 的 REST API,其中包括一个资源,比如 ProductResource。此资源可通过http://my_url/api/product 访问。
我的ProductResource 类中还有一个名为addNew 的函数,它应该处理添加新产品的请求。我想将此方法链接到诸如http://my_url/api/product/new 之类的url。
一种选择是像这样覆盖prepend_urls:
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/addNew%s$" %
(self._meta.resource_name, trailing_slash()),
self.wrap_view('addNew'), name="product_add_new"),
]
这按预期工作。我假设另一个选项是使用 urls.py,并在那里定义终点。我试过这样做,并将这一行添加到我的urlpatterns:
url(r"^(?P<resource_name>ProductResource)/addNew/$", ProductResource.addNew, name="product_add_new")
当我这样做时,我收到以下错误:
unbound method addNew() must be called with ProductResource instance as first argument (got WSGIRequest instance instead)
这是可以理解的。所以我的问题是,是否可以通过urls.py 而不是prepend_urls 将资源中的方法绑定到url?如果是,正确的语法是什么?如果不是,prepend_urls 和urls.py 有什么区别?
谢谢
【问题讨论】: