ฉันกำลังพยายามทำสิ่งนี้:
{% 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')