在Tornado HttpGet中传递一个参数和多个参数

6 投票
1 回答
6079 浏览
提问于 2025-04-16 10:01

我想在一个网址里传递一个参数(用来更新我网址中包含的多个参数之一),像这样:

httpGet.setURI(new URI(url/user?"nickname"="John") 

服务器端的代码用Python写的:

class GetInfo(BaseHandler):
  def Get(self):
        nickname = self.get_argument("nickname")
        gender = self.get_argument("gender")
        logging.info(nickname)
        logging.info(gender)

  application = tornado.web.Application([
  (r"/", MainHandler),
  (r"/user", GetInfo),
  ])

服务器告诉我,我不能这样做,因为缺少了“性别”这个参数。我该怎么做呢?

谢谢

1 个回答

2

首先,你的URI(统一资源标识符)似乎是错误的。

httpGet.setURI(new URI(url + "/user?nickname=John") 

如果你在模拟器和网络服务器之间进行测试,并且这两个都在同一台机器上,记得使用服务器的IP地址,而不是像localhost127.0.0.1这样的东西。

举个例子:

String url = "http://192.168.1.104";
httpGet.setURI(new URI(url + "/user?nickname=John");

补充: 下面是对这个问题的回答:

从tornadoweb.org/documentation的例子来看,你可以设置一个默认值。所以你可以尝试像gender = self.get_argument("gender",None)这样的写法。如果你在查询字符串中没有传递任何gender参数,那么gender就会被设置为None

撰写回答