如何访问发送到 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。
我正在通过我的视图发送一个嵌套的自定义字典,那个嵌套的字典是 '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。