Проблема передачи списка в шаблон Django - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь передать список книг из views.py в шаблон HTML.

Я взял пример даты и времени и изменил его, но он не работает.

Вот мойviews.py:

def theBooks(request): 
    t = template.loader.get_template('templates/index.html')
    the_books = Book.objects.all()
    c = template.Context({'books': the_books})
    html = t.render(c)
    return HttpResponse(html)

И мой шаблон:

<!DOCTYPE html>
 <html lang="es">
 <head>
    <meta charset="UTF-8">
    <title>Current Time</title>
 </head>
 <body>

    {# This is a comment #}

    {# check the existence of now variable in the template using if tag #}

  {% if now %}   
     <p>The books are: {{ books }}</p>
  {% else %}               
    <p>now variable is not available</p>
  {% endif %}

 </body>
 </html>

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

the_books '- это список, который также является итератором.

Вы можете попробовать добавить цикл к своему коду.

Пожалуйста, посмотрите код моего шаблона на моем сайте:

{% for item in article %}
<div class="blog-post">

<h2>{{ item.title }}</h2>

<p style="font-size: 12pt;">
<a style="border: 2px solid black;color: black">&nbsp;{{ item.type }} </a>
<i>&nbsp;&nbsp;Posted by GYH on {{ item.data }} {{ item.time }}</i></p>

<a href="article/{{ item.id }}" class="btn btn-default btn-lg ">Read More <i class="fa fa-angle-right"></i></a>
</div>
{% endfor %}

Статья в моем коде точно такая же, как ваши 'the_books', которая находится в view.py, в то время как в шаблоне, названные вами книги.

, если вы хотите показать элемент the_booksпопробуйте:

{% for book in books%}
    <a>book</a>
{% end for %}

Кстати: значение в dict должно равняться значению в html-файле.

0 голосов
/ 18 сентября 2018

Вы удалили now из контекста в вашем представлении, но у вас все еще есть {% if now %} в вашем шаблоне.Вместо этого установите флажок books:

{% if books %}   
    <p>The books are: {{ books }}</p>
{% else %}               
    <p>There are no books</p>
{% endif %}

Обратите внимание, что вы обычно не визуализируете шаблоны, подобные этому, в Django.Обычно вы используете ярлык рендеринга, и вид будет выглядеть примерно так:

from django.shortcuts import render

def view_books(request): 
    books = Book.objects.all()
    context = {'books': books}
    return render(request, 'index.html', context)
...