Tornado get_argument() 解析

本文详细介绍了如何在Tornado框架中自定义GET和POST请求处理程序,通过解析URL获取GET参数,并展示了使用get_argument方法获取查询字段的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.nowamagic.net/academy/detail/1332605

Tornado的每个请求处理程序,我们叫做handler,handler里可以自定义自己的处理程序,其实也就是重写方法,如post,get,get_current_user,send_error等等,这里我们只讲get和post的自定义。

我们都知道,在Tornado里,获得用户的输入,都是一个get_argument搞定,似乎很顺理成章:

    def post(self):
        nowamagic = self.get_argument('nowamagic')
        self.write( nowamagic )

先介绍一点基本知识。我们来看看这么一个

URLhttp://www.nowamagic.net/academy/detail/13321002?page=1#comment
import urlparse

urlparse.urlparse('http://www.nowamagic.net/academy/detail/13321002?page=1#comment')

ParseResult(scheme='http', netloc='www.nowamagic.net', path='/academy/detail/13321002', params='', query='page=1', fragment='comment')

url由scheme(协议),netloc(主机),path(路径),params(最后路径的参数),query(查询字段),fragment(锚)组成。

下面我们要获取URL里的GET参数,也就是获取url query中的参数,怎么办呢?

对于单一的值,在get和post中调用self.get_argument(“name”, “default”)。

对于多选的值,调用self.get_arguments(“name”)即可。

get_argument方法可以设置默认值,也可以设置是否删除两端的空格。

源码声明如下:

    get_argument(self, name, default=_ARG_DEFAULT, strip=True)
    get_arguments(self, name, strip=True)
[E 2025-06-09 09:43:01.897 ServerApp] Uncaught exception GET /aext_core_server/feature_flag/init?1749433381438 (::1) HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/aext_core_server/feature_flag/init?1749433381438', version='HTTP/1.1', remote_ip='::1') Traceback (most recent call last): File "E:\AAAshixunruanjian\Lib\site-packages\tornado\web.py", line 1790, in _execute result = await result ^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_core_server\handlers.py", line 40, in get [account, organizations, account_notebooks] = await asyncio.gather( ^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 119, in anaconda_cloud_proxy user_access_credentials = await self.get_user_access_credentials(auth_optional=auth_optional) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 96, in get_user_access_credentials raise e File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 93, in get_user_access_credentials new_access_token, expires_in = await get_access_token(self.request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 182, in get_access_token raise UnauthorizedError({"reason": "missing refresh_token"}) aext_shared.errors.UnauthorizedError: BackendError 403: missing refresh_token [W 2025-06-09 09:43:01.905 ServerApp] 403 GET /aext_core_server/feature_flag/init?1749433381438 (90f71a62e1044316b870c0c31be2b0ee@::1) 327.22ms referer=http://localhost:8888/tree [W 2025-06-09 09:43:03.271 ServerApp] 404 GET /aext_profile_manager_server/account_details?1749433383151 (90f71a62e1044316b870c0c31be2b0ee@::1) 118.93ms referer=http://localhost:8888/tree [E 2025-06-09 09:43:06.372 ServerApp] Uncaught exception GET /aext_core_server/feature_flag/init?1749433385069 (::1) HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/aext_core_server/feature_flag/init?1749433385069', version='HTTP/1.1', remote_ip='::1') Traceback (most recent call last): File "E:\AAAshixunruanjian\Lib\site-packages\tornado\web.py", line 1790, in _execute result = await result ^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_core_server\handlers.py", line 40, in get [account, organizations, account_notebooks] = await asyncio.gather( ^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 119, in anaconda_cloud_proxy user_access_credentials = await self.get_user_access_credentials(auth_optional=auth_optional) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 96, in get_user_access_credentials raise e File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 93, in get_user_access_credentials new_access_token, expires_in = await get_access_token(self.request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_shared\handler.py", line 182, in get_access_token raise UnauthorizedError({"reason": "missing refresh_token"}) aext_shared.errors.UnauthorizedError: BackendError 403: missing refresh_token [W 2025-06-09 09:43:06.375 ServerApp] 403 GET /aext_core_server/feature_flag/init?1749433385069 (90f71a62e1044316b870c0c31be2b0ee@::1) 19.23ms referer=http://localhost:8888/tree [W 2025-06-09 09:43:06.893 ServerApp] wrote error: 'Forbidden' Traceback (most recent call last): File "E:\AAAshixunruanjian\Lib\site-packages\tornado\web.py", line 1790, in _execute result = await result ^^^^^^^^^^^^ File "E:\AAAshixunruanjian\Lib\site-packages\aext_assistant_server\handlers.py", line 124, in get raise HTTPError(403, reason="missing nucleus_token") tornado.web.HTTPError: HTTP 403: missing nucleus_token [W 2025-06-09 09:43:06.906 ServerApp] 403 GET /aext_assistant_server/nucleus_token?1749433386647 (90f71a62e1044316b870c0c31be2b0ee@::1) 34.55ms referer=http://localhost:8888/tree [W 2025-06-09 09:43:06.949 ServerApp] 404 GET /aext_profile_manager_server/account_details?1749433386706 (90f71a62e1044316b870c0c31be2b0ee@::1) 2.17ms referer=http://
最新发布
06-10
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值