Использование словаря для печати значений в таблицу HTML создает пустую таблицу - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь отобразить таблицу на веб-странице, используя словарь словарей.Выглядит как достаточно простая задача, но пока у меня ничего не получилось.

Пока я пробовал следующий код:
Шаблон:

<table>
      <thead>
        <tr>
          <th>Email</th>
          <th>Name</th>
          <th>Workplace</th>
          <th>Contact Number</th>
          <th>User type</th>
        </tr>
      </thead>
      <tbody>
        {% for key,value in contacts.items %}
        <tr>
          <td>{{ key }}</td>
          <td>{{ value.name }}</td>
          <td>{{ value.workplace }}</td>
          <td>{{ value.contact }}</td>
          <td>{{ value.user_type }}</td>
        </tr>
        {% endfor %}
      </tbody>
</table>

И мойcontacts имеет следующий формат:

{
'webum@cryptonet.top': {'workplace': 'SRK Films', 'user_type': 'company', 'name': 'SRK', 'contact': '-'},
'zojisopeyu@crypto-net.club': {'user_type': 'campus', 'workplace': 'bchjb', 'contact': '1478529631', 'name': 'Pry'}
}

Я отправляю переменную в шаблон через следующее:

return render(request, 'maintainer/mcontact.html',contacts)

Все, что я получаю, это ячейки заголовка, которые яявно написал.Остальные данные таблицы пусты.Отображается сообщение «Нет данных в таблице».Я печатаю contacts в stderr, поэтому я знаю, что переменная имеет правильные значения.Я что-то упустил?Я не понимаю, что еще я должен сделать.Любая помощь приветствуется, так как я очень новичок в Джанго.

1 Ответ

2 голосов
/ 15 июня 2019

Вы должны , а не передавать контакты в качестве корневого контекстного словаря, поскольку это означает, что вы теперь создали переменные, такие как webum@cryptonet.top и zojisopeyu@crypto-net.club в своем шаблоне.

Что вы должны сделатьэто обернуть его в словарь с ключом contacts, например:

return render(request, 'maintainer/mcontact.html',<b>{'contacts':</b> contacts<b>}</b>)

Теперь мы создадим переменную с именем contacts в шаблоне, и вы сможете затем перебирать элементы этого словаря.

Обратите внимание, что Django не знает имя переменной, которую вы передали в вызов render(..).На самом деле, если вы используете словарь буквального типа, как здесь, нет даже переменной, это просто выражение.render(..) [Django-doc] просто принимает контекст с:

context

Словарь значений для добавления в контекст шаблона .По умолчанию это пустой словарь.Если значение в словаре может быть вызвано, представление вызовет его непосредственно перед отображением шаблона.

Таким образом, ключом элементов в этом словаре являются имена переменных и значенийявляются соответствующими значениями, которые будут привязаны к этим переменным (ам) шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...