Python tornado分页合并展示问题,pythontornado,需要在用户输入/chat


需要在用户输入/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

编橙之家文章,

评论关闭