Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Tastypie prepend_URL错误_Python_Django_Api_Tastypie - Fatal编程技术网

Python Django Tastypie prepend_URL错误

Python Django Tastypie prepend_URL错误,python,django,api,tastypie,Python,Django,Api,Tastypie,Django tastypie错误。我试图预先设置url,以便我可以为用户列出朋友,但我得到一个错误“未定义/api/v1/friends/user/1/全局名称“url”处的名称错误”。 下面是好友资源的代码 class FriendsResource(ModelResource): from_user=fields.ForeignKey(UserResource,'from_user') to_user=fields.ForeignKey(UserResource,'

Django tastypie错误。我试图预先设置url,以便我可以为用户列出朋友,但我得到一个错误“未定义/api/v1/friends/user/1/全局名称“url”处的名称错误”。 下面是好友资源的代码

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_URL的代码和放入wrap_视图的方法

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')
               ]
def get_用户(自我、请求):
self.method_check(请求,['get']))
朋友=[]
对于Friends.objects.filter(Q(from_user=request.user)| Q(to_user=request.user)):
添加(好友)
def prepend_URL(自身):
返回[
url(r“^(?P%s)/(?P\w[\w/-]*)/用户%s$”%(self.\u meta.resource\u name,trailing\u slash()),
self.wrap\u视图('get\u users'),name='api\u get\u friends\u for\u 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
环境:
请求方法:获取
请求URL:http://localhost:8000/api/v1/friends/user/1/
Django版本:1.6.2
Python版本:2.7.3
已安装的应用程序:
(“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“tastypie”,
“用户教授”,
"关系",,
“事件”,
“喜欢”,
"feed")
已安装的中间件:
('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.xframeoptions中间件')
回溯:
get_响应中的文件“/root/python/django-zack/local/lib/python2.7/site packages/django-1.6.2-py2.7.egg/django/core/handlers/base.py”
101解析程序匹配=解析程序.resolve(请求.path\u信息)
解析中的文件“/root/python/django-zack/local/lib/python2.7/site packages/django-1.6.2-py2.7.egg/django/core/urlresolvers.py”
318对于self.url_模式中的模式:
url_模式中的文件“/root/python/django-zack/local/lib/python2.7/site packages/django-1.6.2-py2.7.egg/django/core/urlresolvers.py”
346patterns=getattr(self.urlconf_模块,“urlpatterns”,self.urlconf_模块)
urlconf_模块中的文件“/root/python/django-zack/local/lib/python2.7/site packages/django-1.6.2-py2.7.egg/django/core/urlresolvers.py”
341self.\u urlconf\u module=import\u模块(self.urlconf\u名称)
导入模块中的文件“/root/python/django-zack/local/lib/python2.7/site packages/django-1.6.2-py2.7.egg/django/utils/importlib.py”
40.         __导入(名称)
文件“/root/python/django-zack/wyat/wyat/url.py”
25url(r“^api/”,包括(v1_api.url)),
URL中的文件“/root/python/django-zack/local/lib/python2.7/site-packages/tastype/api.py”
107模式列表.append((r“^(?P%s)/%self.api\u名称,包括(self.\u注册表[name].url)))
URL中的文件“/root/python/django-zack/local/lib/python2.7/site-packages/tastype/resources.py”
324URL=self.prepend_url()
prepend_URL中的文件“/root/python/django-zack/wyat/event/api.py”
68url(r“^(?P%s)/(?P\w[\w/-]*)/用户%s$”%(self.\u meta.resource\u name,trailing\u slash()),
异常类型:name错误位于/api/v1/friends/user/1/
异常值:未定义全局名称“url”
请告诉我哪里错了,因为我使用了嵌套资源烹饪书中的示例,我看不出哪里错了。

@Zacmwa

我有一个可用的prepend_URL..您可以查看以下示例

def prepend_urls(self): return [ url(r"^(?P%s)/generate%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('genusr'), name="api_get_genusr"), ] def genusr(self, request, **kwargs): data = self.deserialize(request, request.body, format=request.META.get('Content-Type', 'application/json')) print(data.get('workflows',None)) child_resource = UserResource() return child_resource.get_list(request) def prepend_URL(自身): 返回[ url(r“^(?P%s)/生成%s$”% (self.\u meta.resource\u name,尾随的\u斜杠()), self.wrap_view('genusr'),name=“api_get_genusr”), ] def GEUNSR(自我、请求、**kwargs): data=self.deserialize(request,request.body,format=request.META.get('Content-Type','application/json')) 打印(data.get('工作流',无)) child_resource=UserResource() 返回子资源。获取子资源列表(请求) 上面的方法封装在我的资源模型中


由于某些导入丢失,可能会导致错误。请尝试从tastypie.utils导入尾部斜杠导入django.core.urlResolver导入解析,然后重试。请告诉我执行此操作时会发生什么情况。

您是否可以检查是否从django.core.urlResolver导入解析。请告诉我这是否是 case@Sumuga即使在导入它之后,我仍然会遇到相同的错误。我的语法可能是错误的,或者可能是我使用的django版本1.6.1。谢谢。我需要导入django.conf.url。现在我唯一的问题是url的语法。我希望它显示api/v1/friends/user/1,其中1是用户的id,但我会收到一条错误消息Invalid resource look向上提供了数据。我的url应该如何写入。我正在为嵌套资源使用prepend_url,这样我就可以根据这个问题中的第一个建议列出用户的朋友。你能告诉我怎么做吗。我还可以根据我的get_users方法传递朋友数组。
def get_users(self,request):self.method_check(request,['get'])friends=[]对于friends中的friends,objects.filter(Q(from_user=request.user)| Q(to_user=request.user)):friends.append(friend)
有一种方法可以做到这一点。您已经提到,user/后面会有一个在prepend\u url方法中编写的正则表达式中的主键。请看下面的文章。它的主键与您上面提到的相同