如何访问发送到 Django 模板的嵌套字典中的值

How to access the values in nested dictionary sent to django template

我正在通过我的视图发送一个嵌套的自定义字典,那个嵌套的字典是 'history'

def update_participation(request,user_id,event_id):
    ev=Event.objects.get(id=event_id)
    data=Participated(user=user_id,event=event_id)
    data.save()
    participated=Participated.objects.filter(user=user_id)
    i=0

    #Declared the dictionary history
    history={}

    #Adding values to dictionary
    for partcipate in participated:
        name=Event.objects.get(id=partcipate.event)
        name1=name.name
        fest=Fest.objects.get(id=name.fest_id.id)
        fest1=fest.name
        clg=College.objects.get(id=fest.clg_id.id).name
        history[i]={'event':name1,'fest':fest1,'college':clg}
        i+=1
    messages.success(request,f'You have registered for {ev.name}')

    #sending the dictionary to template
    return render(request,'webpage/my_events.html',history)

字典的例子会看

history={0={'event':'css battle','fest':'verve','college':'jss'},
         1={'event':'code wars','fest':'verve','college':'jss'},
         2={'event':'hangman','fest':'phase shift','college':'bms'}}

我正在尝试访问值 css 战斗、神韵、jss 喜欢

{%extends 'webpage/base.html'%}
{%block content%}
<h2 style="margin:5px 30px;"><u>My Event History</u></h2>
<div style="margin:50px 0px 0px 270px" class='table'>
    <table border='5'>
        <tr>
            <th>Event</th>
            <th>Fest</th>
            <th>College</th>
        </tr>
        {%for key,value in history.items%}
            <tr>
                <td>{{value.event}}</td>
                <td>{{value.fest}}</td>
                <td>{{value.college}}</td>
            </tr>
        {%endfor%}
    </table>
</div>
{%endblock content%}

我应该如何遍历字典?

除了可以进行一些查询优化外,您还应该更改数据结构。这也使得它更容易访问。见下文:

method.py

   def update_participation(request, user_id, event_id):
        event = Event.objects.get(id=event_id)
        data = Participated(user=user_id, event=event_id)
        data.save()

        participated = Participated.objects.filter(user=user_id)

        history = []
        for partcipate in participated:
            name=Event.objects.get(id=partcipate.event)
            name1=name.name

            fest=Fest.objects.get(id=name.fest_id.id)
            fest1=fest.name

            clg=College.objects.get(id=fest.clg_id.id).name
            history.append({'event':name1,'fest':fest1,'college':clg})

        messages.success(request,f'You have registered for {ev.name}')
        #sending the dictionary to template
        return render(request, 'webpage/my_events.html', context={'history': history})

template.html:

{% for item in history %}
    <tr>
        <td>{{item.event}}</td>
        <td>{{item.fest}}</td>
        <td>{{item.college}}</td>
    </tr>
{% endfor %}

此外,请为您的变量指定适当的名称,而不是 name1 和 fest1。