Bunu yapmaya çalışıyorum:
{% for movie in movie_list | sort(movie.rating) %}
Ama bu doğru değil ... belgeler belirsiz ... Bunu Jinja2'de nasıl yaparsınız?
Bunu yapmaya çalışıyorum:
{% for movie in movie_list | sort(movie.rating) %}
Ama bu doğru değil ... belgeler belirsiz ... Bunu Jinja2'de nasıl yaparsınız?
Yanıtlar:
2.6 sürümünden itibaren, Jinja2'nin yerleşik sıralama filtresi, sıralama için bir öznitelik belirlemenize olanak tanır:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Artan düzende sıralamak istiyorsanız
{% for movie in movie_list|sort(attribute='rating') %}
Azalan düzende sıralamak istiyorsanız
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Genellikle listeyi Jinja2'ye vermeden önce sıralarız. Jinja'nın sort
filtresinde bir anahtar belirlemenin bir yolu yok .
Ancak her zaman deneyebilirsiniz {% for movie in movie_list|sort %}
. Sözdizimi budur. Sıralama için herhangi bir anahtar bilgi veremezsiniz.
Bunun için özel bir filtre de deneyebilir ve yazabilirsiniz. Verileri Jinja2'ye vermeden önce sıralayabilmeniz aptalca görünüyor.
Eğer movie_list
nesnelerin bir listesi, daha sonra çeşitli karşılaştırma yöntemleri (tanımlayabilir __lt__
, __gt__
bu nesnelerin sınıfı için, vb.)
Eğer movie_list
küpe veya listelerin bir listedir, derecelendirme ilk olmalıdır. Ya da sıralamayı Jinja2 dışında yapmanız gerekir.
Bir movie_list
sözlükler listesiyse, o zaman kullanabilirsiniz dictsort
, bu, sıralama için anahtar bir özelliği kabul eder. Örnek için şunu okuyun: http://jinja.pocoo.org/2/documentation/templates#dictsort .
dict.items()
):sort(attribut='1')