AttributeError:'unicode'对象没有属性'pop' [英] AttributeError: 'unicode' object has no attribute 'pop'

查看:1200
本文介绍了AttributeError:'unicode'对象没有属性'pop'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  def post(self):
cases = self .request.get('cases')
while case:
logging.info(cases:%s%cases)
case = cases.pop()

哪个产生这个日志。

  INFO 2012-09-19 20:23:50,690 views.py:674] cases:[u'court1150'] 
ERROR 2012-09-19 20:23:50,690 webapp2.py:1553]'unicode 'object has no attribute'pop'
Traceback(最近一次调用的最后一个):
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib /webapp2/webapp2.py,第1536行,在__call__
中rv = self.handle_exception(request,response,e)
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default。 bundle / Contents / Resources / google_appengine / lib / webapp2 / webapp2.py,第1530行,在__call__
rv = self.router.dis修补程序(请求,响应)
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py第1278行,位于default_dispatcher
返回route.handler_adapter(请求,响应)
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py,第1102行,在__call__
返回handler.dispatch()
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2。 py,第572行,发送
返回self.handle_exception(e,self.app.debug)
文件/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/资源/ google_appengine / lib / webapp2 / webapp2.py,第570行,发送
返回方法(* args,** kwargs)
文件/ Users / br ian / googleapps / scheduler / views.py,第675行,后
case = cases.pop()
AttributeError:'unicode'对象没有属性'pop'

另一方面,在交互式控制台中使用这个几乎相同的代码。

  cases = [u'court1150'] 
while case:
case = cases.pop()
print case
print cases

我没有收到任何错误,并打印出下列内容。

  court1150 
[]

为什么我在gae启动器中得到一个unicode错误,我该如何解决它?

解决方案

self.request。 get('cases')不返回值列表,它只返回一个值。尝试使用 get_all('cases')来代替:

  def post( self):
cases = self.request.get_all('cases')
while case:
logging.info(cases:%s%cases)
case = cases .pop()

没有必要使用while循环,for循环效果更好:

  def post(self):
cases = self.request.get_all('cases')
logging.info(个案:%s%个案)
案例情况:
#处理案件。


I have this piece of python code in gae.

def post(self):
    cases=self.request.get('cases')
    while cases:
        logging.info("cases: %s " % cases)
        case=cases.pop()

Which produces this log.

INFO     2012-09-19 20:23:50,690 views.py:674] cases: [u'court1150'] 
ERROR    2012-09-19 20:23:50,690 webapp2.py:1553] 'unicode' object has no attribute 'pop'
Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "/Users/brian/googleapps/scheduler/views.py", line 675, in post
    case=cases.pop()
AttributeError: 'unicode' object has no attribute 'pop'

On the other hand with this almost identical code in the interactive console.

cases = [u'court1150'] 
while cases:
    case=cases.pop()
    print case
print cases

I get no error and the following print out.

court1150
[]

Why am I getting a unicode error in the gae launcher and how can I fix it?

解决方案

self.request.get('cases') does not return a list of values, it returns just one value. Try using get_all('cases') instead:

def post(self):
    cases=self.request.get_all('cases')
    while cases:
        logging.info("cases: %s " % cases)
        case=cases.pop()

There is no need to use a while loop, a for loop works much better:

def post(self):
    cases=self.request.get_all('cases')
    logging.info("cases: %s " % cases)
    for case in cases:
        # do something with case.

这篇关于AttributeError:'unicode'对象没有属性'pop'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆