如何按字母顺序对这个Django模板代码的输出进行排序?
我在一个Django模板里有以下代码:
{% for object in object_list %}
{% with game=object.game %}
<a href="{% url game_view game.id game.title|slugify %}" class="img_link alphabeticList">{{game.title}}</a>
{% endwith %}
{% endfor %}
这段代码会输出当前类别下的所有游戏,比如:
Armor Dude
Midnight Strike
Super Mafia Bros
Mission To Mars
Zed
game1 test 3
Examine the mystery of the crime in Apartment 13
Manor Freedom : The Patron's Chamber
Escape Journey
Outrun Summer Camp
Make your way through zombies hordes
Intelligent Guy
Run 3D : The Bathroom
Lady Gaga Escape Game
Insane Box
Will you do me A Small Favor?
Shanty Breakout
Cloudy Tumble Second Chaptert
Hotel Area Lock In
Escape From the Aircraft Hangar
RANDOM GAMES
Scene of the Caper: Gold Toy Scene of the Caper: ...
Escape Journey Escape Journey
Cloudy Tumble Second Chaptert Cloudy Tumble Second...
Midnight Strike Midnight Strike
BB EXCLUSIVES
Soldier Of Pain Soldier Of Pain
Walk The Stork Walk The Stork
我想知道怎么把这些游戏的输出按字母顺序排列,并且把每个游戏标题开头的字母放在一起,比如:
A
---
Apple
Alligator
B
---
Burger
Bungee
Bear
C
---
cat
等等……
请注意,我只能使用模板标签,不能访问任何Python代码。
1 个回答
2
我不喜欢在模板里放太多逻辑。一般来说,我会把列表在视图中分组,或者使用自定义标签来帮我处理这些事情。我其实不太确定这样做是否可行,但也许可以试试切片、排序和重新分组的组合,看看能不能得到你想要的结果?
如果这样不行的话,可能就只能用JavaScript了,不过这并不是一个推荐的做法。
{% regroup object_list|dictsort:"game.title" by game.title|upper|slice:"0" as grouped_list %}
{% for group in grouped_list %}
<p>{{ group.grouper }}</p>
{% for game in group.list %}
<a href="{% url game_view game.id game.title|slugify %}" class="img_link alphabeticList">{{ game.title }}</a>
{% endfor %}
{% endfor %}