You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Tornado Web框架中获取URL参数遇问题,寻求解决方案

解决Tornado获取URL参数的问题

看起来你在使用Tornado处理GET请求参数时遇到了麻烦,我帮你梳理几个可能的问题点和修复方案:

1. 修正curl请求的参数传递方式

你提到的curl命令里用了双引号包裹参数值(比如name="p..."),在shell环境下,双引号会被解析,导致实际传递给服务器的参数可能不符合预期。推荐两种正确的写法:

# 方式1:去掉参数值的引号
curl localhost:8000/account?name=parsa&depo=IT
# 方式2:用单引号包裹整个URL(避免shell解析&符号)
curl 'localhost:8000/account?name=parsa&depo=IT'

如果参数值包含空格、特殊字符,第二种用单引号包裹的方式会更安全。

2. 修复代码中的拼写错误

你的代码里有个明显的拼写问题:respone应该改为response,虽然这不会直接导致参数获取失败,但会影响响应的正常返回:

# 错误写法
respone = {'name':name ,'depo':depo}
# 正确写法
response = {'name':name ,'depo':depo}

3. 处理参数缺失的异常(可选但推荐)

Tornado的get_argument()方法如果检测到请求中没有对应的参数,会直接抛出400 Bad Request错误。如果希望参数是可选的,可以给方法设置默认值,或者使用专门获取URL查询参数的get_query_argument():

def get(self):
    # 给参数设置默认值,避免参数缺失时直接报错
    name = self.get_argument('name', default='unknown')
    depo = self.get_argument('depo', default='unknown')
    response = {'name':name ,'depo':depo}
    self.write(response)

4. 规范类命名(Python最佳实践)

虽然这不是功能问题,但按照Python的PEP8规范,类名应该使用大驼峰命名法,把account改为Account,同时在路由配置里对应修改:

def main_app(): 
    return tornado.web.Application([ 
        (r"/reg", register), 
        (r"/account", Account),  # 对应修改类名引用
    ])

class Account(tornado.web.RequestHandler):  # 类名改为大驼峰
    def get(self):
        name = self.get_argument('name')
        depo = self.get_argument('depo')
        response = {'name':name ,'depo':depo}
        self.write(response)

把这些点修复后,再测试你的curl请求,应该就能正常获取URL参数了。

内容的提问来源于stack exchange,提问作者Parsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:10:45