Django模板不保留OrderedDict

时间:2017-02-14 17:50:43

标签: python django

该函数返回一个有序列表

    my_olist = OrderedDict() 
    my_olist['bananas'] = 3
    my_olist['apples'] = 1
    ..
    return my_olist
view.py中的

我确认订单已维持

   returned_ordered_list = mylist()  # this is still ordered
    request.session['results'] = {...
             'ordered_list': returned_ordered_list
}
return render(request, HttpResponseRedirect(reverse('myapp:resultspage',))

但是,在HTML模板结果页中,不再维护订单

{% for key, value in ordered_list.items %} 
<b>{{key}}:</b> {{value}} <br>
 {% endfor %}

我见过一个为orderedDict工作的解决方案,但他们没有使用HttpResponseRedirect。

2 个答案:

答案 0 :(得分:3)

如果您在会话中存储了一个有序的dict,那么该订单将不会被保留。默认情况下,Django会话序列化为JSON。当它被反序列化时,你得到一个普通的字典,所以排序将会丢失。

如果排序很重要,并且您不必按密钥访问字典值,那么您可以改为使用元组列表:

my_olist = [] 
my_olist.append(('bananas', 3))
my_olist.append(('apples', 1))

然后更新模板以遍历列表:

{% for key, value in ordered_list %}

答案 1 :(得分:1)

firebase数据 image of firebase realtime storage

python.py

firebase = Firebase(config)
db = firebase.database()
x = db.child("Home page").get()
output = {
     'value':x
   }
return render(request, "index.html",output)

index.html

 <p class="m-t-10 m-b-0 font-18 wow fadeInUp " id="K">{{ value.val.KhadiMadeFashionable } </p> 

相关问题