使用来自django模板的unicode键访问字典

时间:2015-08-16 17:42:58

标签: unicode django-templates

我有一个带有unicode键的字典(字典是从mongo db中提取的)。当我在模板中渲染它时,我无法使用键访问它,因为无法在模板中生成unicode字符串(我知道没有)

这是我的代码:(缩写)

views.py

context={
         'title':'Mytitle',
         'options'={
                    u'A':u'1st option',
                    u'A':u'1st option',
                    u'A':u'1st option', 
                    u'A':u'1st option',
                    u'A':u'1st option'
         }
}      
return render(request,'trial.html',context)

trial.html

<head>
    <title>{{title}}</title>
</head>
<body>
    {% for i in 'ABCDE' %}
    <div>{{options.i}}</div>
</body>

我想要的是按键的字母顺序显示选项中的值。如果可以通过任何其他方式来解决这个unicode问题,我很高兴。如果有任何方法可以从mongo获取ascii字符串,那也将解决它。

1 个答案:

答案 0 :(得分:0)

假设您的上下文采用dict格式(您的选项为=)。您可以创建自定义模板标签以对选项中的值进行排序。我希望它有所帮助。

# custom templatetag
@register.filter
def sort_by_key(options):
    # output of this is a list of tuples [('A', 'value1'), ('B', 'value2')]
    return sorted(options.items(), key=lambda s: s[0])

# Template
{% for option in options|sort_by_key %}
    <!-- here key=option.0 and value=option.1 -->
    <option id="{{ option.0 }}" value="{{ option.1 }}">{{ option.1 }}</option>
{% endfor %}