我有一个应用程序,它根据某些参数请求数据。我使用两个函数来处理请求,然后从响应中创建两个对象。我能够单独遍历每个对象并在我的网页上显示特定对象的数据,但是当我尝试同时使用这两个函数时,只有一个函数遍历对象。我的理解是这个问题与URL模式有关,但我不是最好的方法。您将在下面找到我的urlpatterns,我的函数以及用于访问视图的HTML。
urls.py
urlpatterns = [
path('', views.customer, name='customer'),
path('', views.information, name='information'),
]
views.py
def customer(request):
for i, contact in enumerate(contactObj):
try:
contacts = contactObj
context = {'contacts': contacts}
except KeyError:
print()
return render(request, 'uccx/home.html', context)
def information(request):
for i, ticket in enumerate(ticketObj):
try:
tickets = ticketObj
context = {'tickets': tickets}
except KeyError:
print()
return render(request, 'uccx/home.html', context)
home.html的
<tbody>
{% for ticket in tickets %}
<tr class="{% cycle 'row1' 'row2'">
<td> {{ ticket.id }} </td>
<td> {{ ticket.company.name }} </td>
<td> {{ ticket.summary }} </td>
</tr>
{% endfor %}
</tbody>
答案 0 :(得分:2)
对于每个视图,您的网址格式应该不同。否则,它将始终调用上面定义的视图,您可以通过customer
或information
所以你的网址格式应该是
urlpatterns = [
path('customer/', views.customer, name='customer'),
path('information/', views.information, name='information'),
]
<强>更新强>
您不必创建单独的视图来从不同的表中获取对象 在网页上显示
创建单个视图并在上下文字典中发送尽可能多的对象。
def table_content(request):
...
# fetch objects here from model
contacts = Contact.objects.all()
tickets = Ticket.objects.all()
# set objects to context dictionary
context = {'contacts': contacts, 'tickets' : tickets}
return render(request, 'uccx/home.html', context)
现在,您可以在模板中轻松遍历tickets
和contacts
{% for ticket in tickets %}
<tr>
<td> {{ ticket.id }} </td>
...
</tr>
{% endfor %}
{% for contact in contacts %}
<tr>
<td> {{ contact.id }} </td>
...
</tr>
{% endfor %}