ฉันกำลังพยายามทำสิ่งนี้:
{% for movie in movie_list | sort(movie.rating) %}
แต่ไม่ถูกต้อง ... เอกสารยังคลุมเครือ ... คุณจะทำสิ่งนี้ใน Jinja2 ได้อย่างไร?
ฉันกำลังพยายามทำสิ่งนี้:
{% for movie in movie_list | sort(movie.rating) %}
แต่ไม่ถูกต้อง ... เอกสารยังคลุมเครือ ... คุณจะทำสิ่งนี้ใน Jinja2 ได้อย่างไร?
คำตอบ:
ในเวอร์ชัน 2.6 ตัวกรองการเรียงลำดับในตัวของ Jinja2 ช่วยให้คุณระบุแอตทริบิวต์เพื่อจัดเรียงตาม:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
ในกรณีนี้เพียงแค่ใช้ตัวเลือก
หากคุณต้องการเรียงลำดับจากน้อยไปมาก
{% for movie in movie_list|sort(attribute='rating') %}
หากต้องการเรียงลำดับจากมากไปหาน้อย
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
โดยปกติเราจะเรียงลำดับรายการก่อนที่จะมอบให้กับ Jinja2 ไม่มีวิธีระบุคีย์ในsort
ตัวกรองของ Jinja
{% for movie in movie_list|sort %}
แต่คุณสามารถลอง นั่นคือไวยากรณ์ คุณไม่ต้องให้ข้อมูลสำคัญใด ๆ สำหรับการจัดเรียง
คุณยังสามารถลองเขียนตัวกรองที่กำหนดเองสำหรับสิ่งนี้ได้ ดูเหมือนโง่เมื่อคุณสามารถจัดเรียงก่อนที่จะให้ข้อมูลกับ Jinja2
หากmovie_list
เป็นรายชื่อของวัตถุแล้วคุณสามารถกำหนดวิธีการเปรียบเทียบต่างๆ ( __lt__
, __gt__
ฯลฯ ) สำหรับการเรียนของวัตถุเหล่านั้น
หากmovie_list
เป็นรายการสิ่งที่เพิ่มขึ้นหรือรายการต้องให้คะแนนเป็นอันดับแรก หรือคุณจะต้องทำการจัดเรียงนอก Jinja2
หากmovie_list
เป็นรายการพจนานุกรมคุณสามารถใช้ได้dictsort
ซึ่งยอมรับข้อกำหนดสำคัญสำหรับการเรียงลำดับ อ่านสิ่งนี้: http://jinja.pocoo.org/2/documentation/templates#dictsortสำหรับตัวอย่าง
dict.items()
):sort(attribut='1')