请求与响应
接受get传递参数:
- self.get_argument(name)
- self.get_arguments(name)
- self.get_query_argument(name)
- self.get_query_arguments(name)
接受post传参:
- self.get_argument(name)
- self.get_arguments(name)
- self.get_body_argument(name)
- self.get_body_arguments(name)
命令行
define('port',default=8080,type=int)
parse_command_line()
app.listen(options.port)
python xxx.py --port=端口号
tornado应用
-
获取tornado.web.Application对象 (1)handlers=[(访问路由,执行方法)] template_path=模板路径 static_path=静态资源路径(导入静态文件: href=‘/static/css/xxx.css’ 或 {{static_url(‘css/xxx.css’)}} ) (2)监听端口:Application对象.listen(端口)
def make_app():
return tornado.web.Application(handlers=[
(r'/',MainHandler),
(r'/admin', EntryHandler),
(r'/index',IndexHandler)
],template_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),'template')
)
- 执行方法类,继承tornado.web.RequestHandler
定义get、post方法
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello,tornado')
def post(self):
self.write('hello post')
- 启动 监听IO实例
tornado.ioloop.IOLoop.current().start()
路由定义
-
第一种 不命名 tornado.web.Application(handlers=[(‘/days/(\d+)/(\d+)’,daysHandler)] 方法定义时的参数顺序与之一 一对应 def get(self,month,day) -
第二种 命名参数 ?P<paramterName> 正则
tornado.web.Application(handlers=[('/days/(?P <name> \d+)/(?P <name2> \d+)',daysHandler)]
def get(self,name2,name)
切入点函数(以数据库连接为例)
1、def initialize 自动执行 2、def on_finish
class EntryHandler(tornado.web.RequestHandler):
def initialize(self):
self.conn=pymysql.Connect(host='127.0.0.1',password='root',database='market',user='root',port=3306)
self.cursor=self.conn.cursor()
print('initialize')
def get(self):
print('get')
sql='select * from admin'
self.cursor.execute(sql)
data=self.cursor.fetchall()
print(data)
self.write('查询数据')
def post(self):
pass
def on_finish(self):
print('on_finish')
self.conn.close()
模板
父模板
挖坑:{% block name %} {% end %}
子模板
继承:{% extends ‘父模板名称’ %}
模板语法
标签 {% 标签名%} {%end%}
- while标签 {% while条件 %} {%end%}
- for标签 {% for 变量 in [] %} {%end%}
- set 标签 {% set 变量=值 %} 可设置一个变量
变量:{{变量名}}
注解{#注解内容#}
数据库连接
1.conn.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
db_url='mysql+pymysql://root:root@127.0.0.1:3306/sys'
engine=create_engine(db_url)
Base=declarative_base(engine)
DbSession=sessionmaker(bind=engine)
session=DbSession()
2、Model
from sqlalchemy import Column,Integer,String
from utils.conn import Base
def create_db():
Base.metadata.create_all()
class Student(Base):
id=Column(Integer,primary_key=True,autoincrement=True)
s_name=Column(String(10),unique=True,nullable=False)
s_age=Column(Integer,default=18)
__tablename__='student'
3、Handler
class StuHandler(tornado.web.RequestHandler):
def get(self):
res=session.query(Student).filter_by(s_name='xzc').all()
print(res)
self.write('查询数据成功!')
def delete(self):
session.query(Student).filter(Student.s_name=='xzc').delete()
session.commit()
self.write('数据删除成功!')
|