tornado分页问题

需要在用户输入/chat_data后展示该页面,页面内容大致如下:
图片描述

后端使用get及post render chat_data.html,get用于初始化展示,post用于在用户选择区服和公会查询结果的展示。前端需要直接返回区服默认值及公会默认值,并展示对应的数据,同时初始化分页,1到总页数;

现在的问题是:get和post方法中的代码很相近,都是查询数据库,怎么合并一起展示

回答:

提取出一个查询数据库的函数放到request hanlder里面呗?get和post的时候都调这个函数就是了。

回答:

get只返回静态页面html,post做分页数据接口,返回json;

页面里用js去分别加载区服、工会列表,放入select里,同时发送post请求取第一页的chat data,参数都为空.

查询时带参数post就行了;

class ChatDataListForm(Form):

qufu_id = IntegerField(validators=[Optional()])

gonghui_id = IntegerField(validators=[Optional()])

#

# draw = IntegerField(validators=[Optional()], default=1)

# page = IntegerField(validators=[Optional()], default=0)

offset = IntegerField(validators=[Optional()], default=0)

limit = IntegerField(validators=[Optional()], default=10)

order_by = StringField(validators=[Optional()])

class ChatDataListHandler(BaseHandler):

def get(self):

self.render('chat-data.html')

def post(self):

form = ChatDataListForm(self.request.arguments)

q = self.session.query(ChatData)

records_total = q.count()

if form.gonghui_id.data is not None:

q = q.filter(ChatData.gonghui_id == form.gonghui_id.data)

if form.qufu_id.data is not None:

q = q.filter(ChatData.qufu_id == form.qufu_id.data)

records_filtered = q.count()

q = q.order_by('id desc')

records = q.offset(form.offset.data).limit(form.limit.data).all()

#records = q.offset((form.page.data) * form.limit.data).limit(form.limit.data).all()

ret = {

'code': 0,

'recordsTotal': records_total,

'recordsFiltered': records_filtered,

'data': records,

'draw': form.draw.data,

}

self.render_json(ret)

类似的再写区服、公会的handler, 这样handler功能较为简单专一,不过需要写些js

以上是 tornado分页问题 的全部内容, 来源链接: utcz.com/a/162415.html

回到顶部