2010-11-29 5 views
2

Ich habe eine Frage zu Pylons request.params, die ein MultiDict-Objekt zurückgibt.Pylone: ​​Bestellung in request.params erhalten?

Belässt request.params die Reihenfolge der GET-Parameter auf zuverlässige Weise?

Zum Beispiel, wenn ich http://localhost:5000/hello/index?a=1&a=2 besuchen und request.params aufrufen, konnte ich garantieren, dass das zurückgegebene MultiDict-Objekt in der folgenden Reihenfolge wäre?

>>> request.params 
MultiDict([('a', '1'), ('a', '2')]) 

Ich vermute nicht, weil Python ein separates OrderedMultiDict Objekt für verwendet zu haben scheint, gut, bestellte MultiDicts.

Wenn nicht, gibt es eine andere Möglichkeit, die GET-Parameter zu erhalten und ihre Reihenfolge in Pylons zu erhalten?

Antwort

2

Wie ich mich erinnere, selbst wenn Sie Pylons erhalten können, um die Reihenfolge zu erhalten, sollten Sie sich nicht auf diese Art von Verhalten verlassen, da nicht alle Benutzeragenten (Browser, Bots, etc.) Ordnung halten und das ist draußen deine Kontrolle.

Wenn es Teil der HTTP-Spezifikation ist, wird es nicht zuverlässig befolgt ... Ich bezweifle es.

Angenommen, der Benutzeragent ist eine Python-Anwendung, die Abfrageparameter mithilfe von Dicts verarbeitet.