2013-06-13 8 views
0

J'ai suivi le tutoriel fourni par Flask. J'essaie de changer un peu les choses et de les faire correspondre au critère d'un glossaire.Comment trier les messages par ordre alphabétique dans un flacon?

Je pense que mon problème se trouve dans cette ligne de code dans mon fichier flaskr.py:

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

La raison pour laquelle je soupçonne que c'est parce que quand je mess avec elle tout ce casse. Aussi, quand j'ai essayé de "trier" tout ce qu'il n'a rien fait, oh et il dit à l'ordre par id descendant ... c'est principalement pourquoi.

Ce que j'ai essayé était:

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

Ce qui est probablement brut et une sorte de bête, mais je suis particulièrement nouveau à la programmation. Je ne trouve aucun autre endroit dans mon code où les entrées sont commandées.

J'ai cherché différentes façons d'organiser un dictionnaire par ordre alphabétique, mais je n'ai pas eu trop de chance pour le faire fonctionner. Comme vous pouvez constater.

+0

Est-ce que la méthode 'sort' trier sur place ou retourne-t-elle un nouvel objet? Si c'est un nouvel objet, alors vous devez retourner 'entries.sort()' à la place. –

+0

Je suppose qu'il ne peut que trier sur place? http://wiki.python.org/moin/HowTo/Sorting – ApisGirl

+0

il vous manque la définition des entrées, mais pour voir ce que je veux dire, vérifiez ceci: 'lst = [5,3,2,1]; imprimer lst; liste d'impression (triée (lst)); print lst; 'et alors si vous faites' print lst.sort(); 'vous verrez' None' à la place (remplacez le ';' par newlines - et vous voudrez probablement ajouter un 'print lst' final pour voir ce que arrive) –

Répondre

1

En supposant this est le tutoriel Flask que vous suivez, je pense que votre fonction manque certaines choses. Est-ce que entries est une sorte de variable globale, ou avez-vous simplement supprimé la partie où elle a été créée? J'ai essayé de combiner votre code avec l'un des exemples du tutoriel, et j'ai ajouté quelques commentaires.

@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) 

Maintenant, je ne sais pas du tout savoir Flask, mais je pense que c'est le gist de ce que vous voulez faire.

Vous voudrez peut-être passer en revue certains tutoriels Python (avant d'aborder Flask), car il y a quelques concepts de base qui, une fois que vous aurez compris, rendront tout le reste beaucoup plus facile.

+2

'lambda d: d ['title']' peut être simplement 'operator.itemgetter ('title')' –

+0

Merci, cela fait beaucoup plus de sens. Et oui, c'est le tutoriel que j'utilise. Je vais aborder un python plus basique, ça me semble une bonne idée. – ApisGirl

Questions connexes