标签: flask-table

如何在没有 JS 或 HTML 修改表的情况下通过 Python 在 Flask 表的 sort_url 中设置反向参数?

鉴于下表

class ProductsTable(Table):
  allow_sort=True

  id=Col('ID', show=False)
  price=Col('Price')
  available_online=Col('Available online?')
  available_num=Col('In stock')
  edit=ButtonCol('Edit', url_kwargs=dict(id='id'), endpoint='/products')

  def sort_url(self, col_id, reverse=False):
    if reverse:
      order = 'desc'
    else:
       order = 'asc'
    return '?sort={}&order={}'.format(col_id, order)
Run Code Online (Sandbox Code Playgroud)

由此我得到以下示例路径:

http://localhost:5000/products?sort=price&order=asc
http://localhost:5000/products?sort=available_num&order=asc
Run Code Online (Sandbox Code Playgroud)

我使用这些参数生成一个 SQL 查询,该查询在我的 SQLite 数据库上执行并呈现相应的排序表。

现在我的问题来自reverse我的sort_url. 我找不到任何没有它作为可选参数的示例,因此我无法找到任何告诉我如何设置此参数的示例。

当然,我可以随时更改 URL。对于上面的两个例子,这意味着

http://localhost:5000/products?sort=price&order=desc
http://localhost:5000/products?sort=available_num&order=desc
Run Code Online (Sandbox Code Playgroud)

但是,我希望在用户单击特定表格列的头部时更改顺序。

我怎么做?我是否必须使用实际的 HTML(并添加 JavaScript)或者是否可以通过 Flask 来完成。我在网上看到的表格通常有向上/向下箭头符号

在此处输入图片说明

每当点击时,切换排序顺序。

这涉及到 JS 和 HTML 的修改。如果可能的话,我想坚持使用 Flask 和 Python。Flask 表目前似乎工作的方式是单击无法切换reverse.

即使我reverse像这样将参数公开给我自己表的构造函数

def __init__(self, items, reverse):
  super().__init__(items, sort_reverse=reverse)
Run Code Online (Sandbox Code Playgroud)

这样我就可以根据从 URL 中提取的值来设置它,我的问题如何实际设置该值仍未得到解答。

python sorting flask flask-table

5
推荐指数
0
解决办法
250
查看次数

在 python 上用 html 格式化烧瓶表输出

这里不是一个非常有经验的python用户,只是在家中拿起python。我正在研究将烧瓶表的输出集成到网站。以下是我的 Python 代码,它为我的网站创建了一个简单的表格。

    from flask_table import Table, Col

    app = Flask(__name__)

    class ItemTable(Table):
        name = Col('Name')
        description = Col('Description')

    Class Item(object):
        def __init__(self, name, description):
            self.name = name
            self.description = description

    items = [dict(name='Name1', description='Description1'),
             dict(name='Name2', description='Description2'),
             dict(name='Name3', description='Description3')]

    table = ItemTable(items)


    @app.route("/")
    def hello():
        return render_template('index.html', tStrToLoad=table.__html__())

    if __name__ == "__main__":
        app.run()
Run Code Online (Sandbox Code Playgroud)

和我的 html 代码,它从上面的 python 代码中获取 tStrToLoad 来显示。

<html>
    <head>
        <title>Test Flask Table</title>
        <style>
            body 
            {
                background-color: #000000;
                color: #FFFFFF;
                font-family:Verdana;
                font-size:16px;
            }
            table, th, td
            {
                border: …
Run Code Online (Sandbox Code Playgroud)

html python flask-table

3
推荐指数
1
解决办法
4258
查看次数

标签 统计

flask-table ×2

python ×2

flask ×1

html ×1

sorting ×1