【发布时间】:2023-03-05 11:53:02
【问题描述】:
Django-tastypie 错误。我正在尝试 prepend_urls 以便我可以为用户列出朋友,但我收到错误 "NameError at /api/v1/friends/user/1/ global name 'url' is not defined"。 这是朋友资源的代码。
class FriendsResource(ModelResource):
from_user=fields.ForeignKey(UserResource,'from_user')
to_user=fields.ForeignKey(UserResource,'to_user')
class Meta:
queryset=Friends.objects.all()
serializer=Serializer(formats=['json'])
resource_name='friends'
filtering={
'from_user':ALL_WITH_RELATIONS,
'to_user':ALL_WITH_RELATIONS
}
这里是 prepend_urls 的代码和放入 wrap_view 的方法。
def get_users(self,request):
self.method_check(request,['get'])
friends = []
for friend in Friends.objects.filter(Q(from_user=request.user)|Q(to_user=request.user)):
friends.append(friend)
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/user%s$" %(self._meta.resource_name,trailing_slash()),
self.wrap_view('get_users'),name= 'api_get_friends_for_user')
]
这是回溯:
Environment:
Request Method: GET
Request URL: http://localhost:8000/api/v1/friends/user/1/
Django Version: 1.6.2
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tastypie',
'userprof',
'relations',
'event',
'liking',
'feed')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/root/python/django-zack/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py" in get_response
101. resolver_match = resolver.resolve(request.path_info)
File "/root/python/django-zack/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/urlresolvers.py" in resolve
318. for pattern in self.url_patterns:
File "/root/python/django-zack/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/urlresolvers.py" in url_patterns
346. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/root/python/django-zack/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/urlresolvers.py" in urlconf_module
341. self._urlconf_module = import_module(self.urlconf_name)
File "/root/python/django-zack/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/utils/importlib.py" in import_module
40. __import__(name)
File "/root/python/django-zack/wyat/wyat/urls.py" in <module>
25. url(r'^api/',include(v1_api.urls)),
File "/root/python/django-zack/local/lib/python2.7/site-packages/tastypie/api.py" in urls
107. pattern_list.append((r"^(?P<api_name>%s)/" % self.api_name, include(self._registry[name].urls)))
File "/root/python/django-zack/local/lib/python2.7/site-packages/tastypie/resources.py" in urls
324. urls = self.prepend_urls()
File "/root/python/django-zack/wyat/event/api.py" in prepend_urls
68. url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/user%s$" %(self._meta.resource_name,trailing_slash()),
Exception Type: NameError at /api/v1/friends/user/1/
Exception Value: global name 'url' is not defined
请告诉我哪里错了,因为我使用了关于嵌套资源的食谱中的示例,但我看不出哪里错了。
【问题讨论】:
-
你能检查一下你是否从 django.core.urlresolvers 导入解析。如果是这种情况,请告诉我
-
@Sumuga 即使在导入它之后,我仍然会遇到同样的错误。我的语法可能是错误的还是我使用的 django 版本是 1.6.1。
标签: python django api tastypie