0

我一直在关注 Flask 提供的教程。我正在尝试稍微改变一下,使其符合词汇表的标准。

我怀疑我的问题在于我的 flaskr.py 文件中的这行代码:

cur = db.execute('select title, text from entries order by id desc')

我之所以怀疑这是因为当我弄乱它时,它会破坏一切。同样,当我尝试对所有内容进行“排序”时,它什么也没做,哦,它说按 id 降序排序……这主要是为什么。

我尝试的是:

@app.route('/order', methods=['POST'])
def order_entry():
    entries.sort()
    return entries

这可能很粗糙而且有点愚蠢,但我对编程特别陌生。我在我的代码中找不到任何其他正在订购条目的地方。

我一直在寻找按字母顺序组织字典的不同方法,但没有太多运气让它发挥作用。如你所知。

4

1 回答 1

1

假设是您正在关注的 Flask 教程,我认为您的函数缺少一些东西。是entries某种全局变量,还是您只是删除了创建它的部分?我尝试将您的代码与教程中的一个示例结合起来,并添加了一些注释。

@app.route('/order', methods=['POST'])
def order_entry():
    # the following line creates a 'cursor' which you need to retrieve data
    # from the database
    cur = g.db.execute('select title, text from entries order by id desc')

    # the following line uses that cursor ("cur"), fetches the data, 
    # turns it into a (unsorted) list of dictionaries 
    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]

    # let's sort the list by the 'title' attribute now
    entries = sorted(entries, key=lambda d: d['title'])
    # or if you prefer, you could say: "entries.sort(key=lambda d:d['title']"

    # return the template with the sorted entries in
    return render_template('show_entries.html', entries=entries)

现在,我根本不知道 Flask,但我认为这就是gist你想要做的。

您可能需要阅读一些 Python 教程(在处理 Flask 之前),因为有一些基本概念,一旦您掌握,我认为会让其他一切变得更容易。

于 2013-06-13T23:32:10.440 回答