我正在使用覆盖网址来为不同类型的网址调用特定方法。代码
Resources.py
class LCUserResource(ModelResource):
class Meta:
queryset = LCUser.objects.all()
resource_name= 'lcuser'
authorization = Authorization()
def override_urls(self):
return [
url(r'^register/'%
(self._meta.resource_name, trailing_slash()), self.wrap_view('register_user'), name="api_register_user"),
]
urls.py
v1_api = Api(api_name='v1')
v1_api.register(LCUserResource())
urlpatterns = [
url(r'^api/', include(v1_api.urls)),
]
我正试图通过http://localhost:8000/api/v1/lcuser/register/
访问api但我收到错误全局名称网址未定义。
我尝试导入 来自django.conf.urls.defaults import *
然后我得到No模块名为defaults
答案 0 :(得分:4)
您需要导入网址
from django.conf.urls import url
答案 1 :(得分:1)
如depreciation notes中所述,django 1.6中删除了django.conf.urls.default
:
django.conf.urls.defaults将被删除。功能包括(), patterns()和url()以及handler404,handler500现在可用 通过django.conf.urls。
因此,tastypie
的文档似乎尚未针对django 1.8更新;您可以通过修复发布说明中提到的导入来修复导入错误:
from django.conf.urls import url
这将解决一个问题 - 您的下一个问题是:
r'^register/'% (self._meta.resource_name, trailing_slash())
在解析字符串(%
)时,不确定您在尝试做什么,但没有可替换的变量。这是同样的问题:
>>> a = 'world'
>>> 'hello' % (a,)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
您可能需要以下内容:
r"^register/(?P<resource_name>%s)%s$" % (self._meta.resource_name, trailing_slash())