Шаблоны и представления URL - PullRequest
0 голосов
/ 29 мая 2018

У меня есть приложение, которое запрашивает данные на основе определенных параметров.Я использую две функции для обработки запросов, а затем создаю два объекта из ответов.Я могу выполнять итерацию по каждому объекту индивидуально и отображать данные определенного объекта на моей веб-странице, но когда я пытаюсь использовать обе функции одновременно, только одна функция выполняет итерацию по объекту.Насколько я понимаю, эта проблема имеет отношение к шаблонам 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 голосов
/ 29 мая 2018

Ваши шаблоны URL должны быть разными для каждого просмотра.в противном случае он всегда будет вызывать представление, определенное выше, либо вы называете его customer, либо information

, поэтому ваши шаблоны URL должны быть

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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...