Override url error: global name 'url' is not defined
Override url error: global name 'url' is not defined
我尝试重写 url 来为不同类型的 url 调用特定方法。下面的代码
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
但我收到错误全局名称 urls 未定义。
我试过导入
来自 django.conf.urls.defaults 导入 *
然后我得到 No module named defaults
您需要导入url
from django.conf.urls import url
中所述,django.conf.urls.default
在 django 1.6 中被删除
django.conf.urls.defaults will be removed. The functions include(),
patterns() and url() plus handler404, handler500, are now available
through 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())
我尝试重写 url 来为不同类型的 url 调用特定方法。下面的代码
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但我收到错误全局名称 urls 未定义。
我试过导入 来自 django.conf.urls.defaults 导入 *
然后我得到 No module named defaults
您需要导入url
from django.conf.urls import url
django.conf.urls.default
在 django 1.6 中被删除
django.conf.urls.defaults will be removed. The functions include(), patterns() and url() plus handler404, handler500, are now available through 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())