网址格式和视图

时间:2018-05-29 17:38:09

标签: python html django rest

我有一个应用程序,它根据某些参数请求数据。我使用两个函数来处理请求,然后从响应中创建两个对象。我能够单独遍历每个对象并在我的网页上显示特定对象的数据,但是当我尝试同时使用这两个函数时,只有一个函数遍历对象。我的理解是这个问题与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> 

1 个答案:

答案 0 :(得分:2)

对于每个视图,您的网址格式应该不同。否则,它将始终调用上面定义的视图,您可以通过customerinformation

调用它

所以你的网址格式应该是

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)

现在,您可以在模板中轻松遍历ticketscontacts

{% for ticket in tickets %}
   <tr>
      <td> {{ ticket.id }} </td>
      ... 
   </tr>
{% endfor %}

{% for contact in contacts %}
   <tr>
      <td> {{ contact.id }} </td>
      ... 
   </tr>
{% endfor %}