Я пытаюсь применить цикл 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, и задаюсь вопросом, может ли это быть проблемой? Если да, то как это можно решить?
Вам нужно передать этот контекст:
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 }}
. Дополнительную информацию о контексте можно найти в этом ТАК Ответ.
Не уверен, что предложить, но я думаю, что вы можете следовать официальному руководству django, django girl или видео на YouTube.
Есть ли хороший учебник или ссылка, которая поможет новичку понять лучшие практики и самый простой способ использования шаблонов (например, что-то простое, например, сделать настраиваемые поля ввода текста с их css функциональными с помощью команды {{form}}.