文章目录
一、基础传参
需要修改:
- application中的映射
- views/index中的接口
1.1 application
在路由映射中添加了字典,内部传递了两个参数。
import tornado.web
from views import index
import config
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/',index.IndexHandler,{"userid":"1","username":"gtd"})
]
# 调用父类Application,传递handlers,传递配置
super(Application,self).__init__(handlers,**config.settings)
1.2 views/index
添加了def initialize(self,userid,username): 函数并接收两个参数。
from tornado.web import RequestHandler
# 业务处理类
class IndexHandler(RequestHandler):
# 传参,该方法会在HTTP方法前调用
def initialize(self,userid,username):
self.userid = userid
self.username = username
# 处理get请求
def get(self,*args,**kwargs):
print(self.username,self.userid)
self.write("hello world")
二、服务器传参
2.1 提取url的特定部分
2.1.1 在application中添加指定路由,在路由中做正则匹配.
如下所示
(r’/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler)
完整代码如下:
import tornado.web
from views import index
import config
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/',index.IndexHandler,{"userid":"1","username":"gtd"}),
# 将参数融入地址
(r'/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler)
]
# 调用父类Application,传递handlers,传递配置
super(Application,self).__init__(handlers,**config.settings)
2.1.2还需要在index中添加对应接口
# 从url中获取参数
class SendParameterUrlHandler(RequestHandler):
def get(self,name,id,*args,**kwargs):
print(f"SendParameterUrlHandler : {name}--{id}")
self.write("厉害")
完整代码如下:
from tornado.web import RequestHandler
# 业务处理类
class IndexHandler(RequestHandler):
# 传参,该方法会在HTTP方法前调用
def initialize(self,userid,username):
self.userid = userid
self.username = username
# 处理get请求
def get(self,*args,**kwargs):
print("IndexHandler : ",self.username,self.userid)
self.write("hello world")
# 从url中获取参数
class SendParameterUrlHandler(RequestHandler):
def get(self,name,id,*args,**kwargs):
print(f"SendParameterUrlHandler : {name}--{id}")
self.write("厉害")
2.2 查询字符串(GET)
2.2.1 在application中添加指定路由,如下所示。
(r’/send_parameter_get’, index.SendParameterGetHandler)
完整代码:
import tornado.web
from views import index
import config
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/',index.IndexHandler,{"userid":"1","username":"gtd"}),
# 将参数融入地址
(r'/send_parameter/(\w+)/(\w+)',index.SendParameterUrlHandler),
# get参数传递
(r'/send_parameter_get', index.SendParameterGetHandler)
]
# 调用父类Application,传递handlers,传递配置
super(Application,self).__init__(handlers,**config.settings)
2.2.2在index中编写对应接口,并接收参数
# get参数获取
class SendParameterGetHandler(RequestHandler):
def get(self,*args,**kwargs):
name = self.get_query_argument(name="name",default="NO NAME",strip=False)
id = self.get_query_argument(name="id",default="NO ID",strip=True)
print(f"SendParameterGetHandler : {name}--{id}")
self.write("get参数获取")
完整代码:
from tornado.web import RequestHandler
# 业务处理类
class IndexHandler(RequestHandler):
# 传参,该方法会在HTTP方法前调用
def initialize(self,userid,username):
self.userid = userid
self.username = username
# 处理get请求
def get(self,*args,**kwargs):
print("IndexHandler : ",self.username,self.userid)
self.write("hello world")
# 从url中获取参数
class SendParameterUrlHandler(RequestHandler):
def get(self,name,id,*args,**kwargs):
print(f"SendParameterUrlHandler : {name}--{id}")
self.write("url中参数获取")
# get参数获取
class SendParameterGetHandler(RequestHandler):
def get(self,*args,**kwargs):
name = self.get_query_argument(name="name",default="NO NAME",strip=False)
id = self.get_query_argument(name="id",default="NO ID",strip=True)
print(f"SendParameterGetHandler : {name}--{id}")
self.write("get参数获取")
2.3 请求体携带(POST)
2.3.1 application编写路由
(r’/send_parameter_post’, index.SendParameterPostHandler)
2.3.2 ./templates/indx.html
简单编写前端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a>POST请求页面</a>
<form action="http://127.0.0.1:8002/send_parameter_post" method="post" name="form_post">
name:<input type="text" name="name">
id:<input type="text" name="id">
<input type="submit" value="button">
</form>
</body>
</html>
2.3.3 index接口编写
class SendParameterPostHandler(RequestHandler):
# get请求
def get(self,*args,**kwargs):
# 返回页面
self.render('index.html')
def post(self,*args,**kwargs):
name = self.get_body_argument("name",default="NO NAME")
id = self.get_body_argument("id",default="NO NAME")
print(f"SendParameterPostHandler : {name}--{id}")
self.write("POST请求成功")