Django, HTML-шаблон, цикл for не работает должным образом

Я пытаюсь применить цикл for к следующему html (в проекте Django), чтобы поля «Имя» и «Комментарии» повторялись в представлении html.

Когда я вставляю код шаблона, то есть:

{% for c in comments %}
{% endfor %}

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

Соответствующие части файла приведены ниже:

index.html (главная html-страница)

{% load static %}
<!DOCTYPE html>
<html>
<head>
  <link rel = "stylesheet" href = "{% static 'guestbook/styles.css' %}">
</head>
<body>

<h1>The world's guestbook</h1>
<p><a href = "{% url 'sign' %}">Sign </a>the guestbook</p>
{% for c in comments %}
<h2>Name</h2>


<p>This the message that the user leaves.</p>

{% endfor %}
</body>
</html>

views.py (в приложении гостевой книги)

from django.shortcuts import render
from .models import Comment

# Create your views here.

def index(request):
    comments = Comment.objects.order_by('-date_added')
    context  = {'comments': comments}
    #name=Name.objects.order_by('-date_added')

    return render(request,'guestbook/index.html')


def sign(request):
    return render(request,'guestbook/sign.html')

файл models.py

from django.db import models
from django.utils import timezone

# Create your models here.

class Comment(models.Model):
    name=models.CharField(max_length=20)
    comment=models.TextField()
    date_added=models.DateTimeField(default=timezone.now)
    def __str__(self):
        return self.name    

Я работаю над учебным пособием, в котором это рекомендуемый код, и желаемый результат соответствует ожиданиям - я заметил, что в моем html-шаблоне нет тегов div, и задаюсь вопросом, может ли это быть проблемой? Если да, то как это можно решить?

Django, HTML-шаблон, цикл for не работает должным образом

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
1 484
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно передать этот контекст:

def index(request):
    comments = Comment.objects.order_by('-date_added')
    context  = {'comments': comments}
    return render(request,'guestbook/index.html', context=context)
                                                  ^^^^^^^^^^^^^^^

Из документация по рендеру:

Context: A dictionary of values to add to the template context. By default, this is an empty dictionary. If a value in the dictionary is callable, the view will call it just before rendering the template.

Это означает, что значения внутри словаря, который используется с известным аргументом context функции рендеринга, будут отправлены в шаблон. Затем вы можете получить доступ к этим значениям через {{ key }} словаря (который отправляется как контекст) в шаблоне html или в вашем случае {{ comments }}. Дополнительную информацию о контексте можно найти в этом ТАК Ответ.

Есть ли хороший учебник или ссылка, которая поможет новичку понять лучшие практики и самый простой способ использования шаблонов (например, что-то простое, например, сделать настраиваемые поля ввода текста с их css функциональными с помощью команды {{form}}.

Compoot 09.04.2019 13:28

Не уверен, что предложить, но я думаю, что вы можете следовать официальному руководству django, django girl или видео на YouTube.

ruddra 09.04.2019 21:48

Другие вопросы по теме