【问题标题】:unable to get the content of passed parameters in ast module GAE无法获取ast模块GAE中传递参数的内容
【发布时间】:2015-12-23 06:37:43
【问题描述】:

我有一个端点,我从中调用 webapp post url

这里是端点

userId = '14'
data = {"userId" :userId,"a":"s"}
encodedData = urllib.urlencode(data)
result = urlfetch.fetch(url=DELETE_CHANNEL_URL,payload=encodedData,follow_redirects=False,deadline=30,method=urlfetch.POST,
                            headers={'Content-Type': 'application/x-www-form-urlencoded'})

我在 webapp 中得到了这个

class DeleteChannel(webapp.RequestHandler):
    def post(self):
        logging.info("Delete channel")
        parameters = ast.literal_eval(self.request.body)

        userId  = str(parameters["userId"])
        logging.info('userId' + userId)

但这显示错误

File "/base/data/home/apps/s~dimension-dev-endpoint/1.389460063849645110/Channel.py", line 34, in post
    parameters = ast.literal_eval(self.request.body)
  File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    a=s&userId=14
     ^
SyntaxError: invalid syntax

有什么问题?

【问题讨论】:

  • self.request.body 长什么样?似乎 ast 无法解析。
  • 我该如何解决这个问题?
  • print self.request.body 的输出是什么?
  • self.request.get("userId", default_value='').. 这是有效的@AvinashRaj
  • 不清楚为什么当 self.request.get 是显而易见且记录在案的方法时你会尝试parameters = ast.literal_eval(self.request.body)

标签: python google-app-engine webapp2


【解决方案1】:

我尝试使用以下代码从参数中获取 userId,这对我有用

userId  = self.request.get("userId", default_value='')

【讨论】:

  • 你也可以试试,self.request.json['userId']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多