Как отобразить список нескольких объектов, один под другим, в HTML с помощью Django? - PullRequest
0 голосов
/ 14 сентября 2011

Я действительно новичок в HTML и CSS, так что это, вероятно, очень простой вопрос:

Допустим, у меня есть страница, на которой я показываю книги (со всей информацией, связанной с книгой.как изображение, имя, isbn).Иногда у меня будет 1 книга, а иногда 3 или 6 и т. Д.

Я знаю, как отобразить одну книгу, используя CSS и HTML, но как мне отобразить и расположить несколько книг?Я хочу, чтобы первая книга появлялась вверху страницы, а последующие книги появлялись под ней - как мне этого достичь?

Информация поступает из базы данных и находится на странице HTML через шаблон Django.- поэтому у меня есть шаблоны тегов, такие как {{ author|safe }}, которые содержат имя каждого (в данном случае) автора.

Это код, который у меня есть в шаблоне Django:

<html>
<head>
<body>
<h1>Testing the class page backend</h1>

<ul>
{% for edition in editions %}
    <li>{{ edition|safe }}</li>
{% endfor %}
{% for image in images %}
    <li>{{ image|safe }}</li>
{% endfor %}
{% for author in authors %}
    <li>{{ author|safe }}</li>
{% endfor %}
{% for book_title in book_titles %}
    <li>{{ book_title|safe }}</li>
{% endfor %}
</ul>

</body> 

</html>

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

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

Судя по коду вашего шаблона, кажется, что у вас есть отдельные списки для каждого свойства - один список для всех изображений всех книг, один список для всехавторы и т. д.

Я бы подумал, что было бы более разумно иметь список объектов книги, где каждая книга имеет свои свойства, как вы знаете, свойства.Например,

<ul>{% for book in books %}
    <li>
        <h2>{{ book.title|safe }}</h2>

        <p>by {{ book.author|safe }}</p>

        <p>{{ book.image }}</p>


        <h3>Editions</h3>

        <ul>{% for edition in book.editions %}
            <li>{{ edition|safe }}</li>
        </ul>
    </li>{% endfor %}
</ul>

Конечно, это может не иметь смысла для вашего бэк-энда, но сейчас я не совсем понимаю, в чем ваша проблема на самом деле.

Редактировать:

Думаю, теперь я понимаю ваш контекст.Это действительно не проблема HTML, это проблема шаблона Django.Поскольку у вас есть отдельные списки для каждого свойства ваших книг (вместо списка объектов книги), вам нужно пройтись по этим индексам.Поскольку язык шаблонов Django не имеет встроенного эквивалента range функции Python , вам придется либо использовать пользовательский тег шаблона, либо вставить список индексов в свой контекст (например, context['indexes'] = len(context['editions'])).

Но я бы подумал, что было бы немного более Django-y просто передать список объектов книги в ваш шаблон, как я предлагал выше.

0 голосов
/ 14 сентября 2011

Я пытаюсь отобразить один и тот же формат для каждой книги, кроме как в разных позициях с различным содержанием

, затем просто создаю класс css для некоторого элемента (например, DIV) и помещаюкаждая книга в <div class="yourClass"></div>

в JSP я делаю это так:

<c:forEach var="catEntry" items="${arrayOfProducts}" varStatus="status">
<div class="product">product content</div>
</c:foreach>
0 голосов
/ 14 сентября 2011

Откуда берутся книги?У вас есть база данных или что-то подобное для заполнения вашей страницы?В любом случае, вам, вероятно, нужно написать цикл в массиве книг и вывести что-то вроде упорядоченного или неупорядоченного (или) списка HTML.Но так как вы действительно новичок в HTML и CSS, я не знаю, отвечает ли это на ваш вопрос.

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