Django отображает список словаря в шаблоне - ключ dict как переменная

Я использую Django 4.0 для отображения фронтенд-страницы, исходными данными которой является список dict. Я хочу упорядочить ключи dict и затем отобразить все dict в списке в том же порядке. Вот мой views.py:

def UserGoalstatus(request, promise_token):
    print("__UserGoalstatus__")
    from cmd_utils import Retrieve_goal
    data = Retrieve_goal(promise_token)
    keys = set()
    for item in data:
        keys.update(set(item))  
    key_order = sorted(keys)  

context = {
    "data": data,
    "key_order": key_order,
}
return render(request, 'json_table.html', context)

Вот содержимое моей переменной 'data':

[
{'goal_key': '286815', 'goal_type': 'hotelreservation', 'goal_id': 16149845, 'promise_token': '9ba51cbc-830b-64d603904099', 'campaign_id': 1002204, 'properties': {'price': 100, 'created': '2022-06-13 10:48:34', 'checkout': '2022-06-13', 'currency_code': 'USD', 'completed_booking_status': 1}}, 
{'goal_key': '1208107', 'goal_type': 'hotelreservation', 'goal_id': 16149846, 'promise_token': '9ba51cbc-830b-64d603904099', 'campaign_id': 1002204, 'properties': {'price': 100, 'created': '2022-06-13 10:48:35', 'checkout': '2022-06-13', 'currency_code': 'USD', 'completed_booking_status': 1}}
]

Вот мой html файл, который я хотел бы вывести все содержимое данных в порядке 'key_order'

<table id="dtBasicExample" class="table table-hover table-striped table-bordered" cellspacing="0" width="100%">
    <thead>
        <tr>
            {% for key in key_order %}
            <th>{{ key }}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for item in data %}
        <tr>
            {% for key in key_order %}
            <td>{{ item.get(key) }}</td>
            {% endfor %}
        </tr>
        {% endfor %}
    </tbody>
</table>

Эта часть кажется неправильной :{{ item.get(key) }}, кто-нибудь может предложить правильный способ доступа к отображению значения для конкретного key?

Вот мое решение

Мне нужно определить собственный фильтр шаблонов django

Ключевой частью является 'get_item', он может анализировать ключ словаря как 'переменную' в Django html сейчас. Для более подробной информации смотрите ссылки ниже:

Руководство по Django

ответ на переполнение стека

views.py

# customized template for html
from django.template.defaulttags import register

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)

в json_table.html

<table id="dtBasicExample" class="table table-hover table-striped table-bordered" cellspacing="0" width="100%">
    <thead>
        <tr>
            {% for key in key_order %}
            <th>{{ key }}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for item in data %}
        <tr>
            {% for key in key_order %}
            <td>{{ item | get_item:key}}</td>
            {% endfor %}
        </tr>
        {% endfor %}
    </tbody>
</table>
Вернуться на верх