tornado分页问题

发布于 2022-09-01 05:50:11 字数 313 浏览 11 评论 0

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

后端使用get及post render chat_data.html,get用于初始化展示,post用于在用户选择区服和公会查询结果的展示。前端需要直接返回区服默认值及公会默认值,并展示对应的数据,同时初始化分页,1到总页数;
现在的问题是:get和post方法中的代码很相近,都是查询数据库,怎么合并一起展示

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美胚控场 2022-09-08 05:50:11

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

冰雪梦之恋 2022-09-08 05:50:11

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文