2013-06-13 3 views
0

나는 Flask가 제공 한 자습서를 따라 왔습니다. 나는 물건을 조금 바꿔서 용어집의 기준에 맞추려고 노력하고있다.플라스크에서 알파벳순으로 게시물을 정렬하려면 어떻게해야합니까?

나는 내 문제는 내 flaskr.py 파일에 코드 줄에 있다고 생각 :

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

나는 그것으로 내가 엉망이 모든 것을 파괴 할 때 때문이다 의심하는 이유. 마찬가지로, 내가 아무것도하지 못했던 모든 것을 "정렬"하려고했을 때, 오하이오가 주문하는 것이 내려오고 있다고 말합니다. 그게 바로 이유입니다. 내가 뭘하려

이었다

아마 원유 및 종류의 바보,하지만 프로그래밍에 특히 새로 온 사람
@app.route('/order', methods=['POST']) 
def order_entry(): 
    entries.sort() 
    return entries 

. 항목이 주문되는 곳에서 다른 곳을 찾을 수 없습니다.

사전을 사전 순으로 구성하는 여러 가지 방법을 찾았지만 너무 많은 행운을 얻지는 못했습니다. 당신이 알 수 있듯이.

+0

'sort' 메서드가 내부 정렬되거나 새 객체를 반환합니까? 새로운 객체 인 경우 엔'entries.sort()'를 대신 리턴해야합니다. –

+0

그것은 제자리에서 정렬 만 할 수 있다고 생각하십니까? http://wiki.python.org/moin/HowTo/Sorting – ApisGirl

+0

엔트리의 정의가 빠졌지 만, 무슨 뜻인지 알기 위해 이것을 확인하십시오 :'lst = [5,3,2,1]; lst 인쇄; 인쇄 목록 (정렬 된 (lst)); print lst;'그리고 print lst.sort();를하면'None'이 보일 것입니다 (';'를 개행 문자로 대체하십시오 - 그리고 아마도 마지막'print lst'를 추가하여) –

답변

1

여러분이 따르고있는 Flask 튜토리얼을 가정하면 this은 여러분의 기능에 몇 가지가 빠져 있다고 생각합니다. 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) 

지금, 난 전혀 플라스크를 알고 모르겠지만, 나는 이것이 당신이 원하는 무엇의 gist 생각합니다.

(일단 Flask를 다루기 전에) 파이썬 튜토리얼을 살펴볼 수 있습니다. 몇 가지 기본 개념이 있으므로 일단 파악하면 다른 모든 것을 훨씬 쉽게 만들 수 있다고 생각합니다.

+2

'lambda d : d [ 'title']'는 간단히 operator.itemgetter ('title')' –

+0

일 수 있습니다. 그리고 네, 제가 사용하고있는 튜토리얼입니다. 좀 더 기본적인 파이썬에 착수하겠습니다. 좋은 생각 같아요. – ApisGirl

관련 문제