Django,HTML模板,for循环无法按预期工作

时间:2019-04-09 10:41:55

标签: html django loops templates model

我试图将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标签,并且想知道这是否可能是个问题?如果是这样,如何解决?

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要传递上下文:

<!DOCTYPE html>
<html>
<head>
<title>HMM...</title>
</head>
<body>
<input type="file" id="wowo">
<div id="dispImg">
</div>
<button onclick="wp()">run</button>
<script>
window.URL = window.URL || window.webkitURL;
function wp() {
var file = document.getElementById("wowo").value;

var nopath = file.substring(12);
alert(nopath);

var crimg = document.createElement("img");
crimg.src = window.URL.createObjectURL(nopath);
crimg.height = 60;
crimg.onload = function() {
window.URL.revokeObjectURL(this.src);
}
document.getElementById("dispImg").appendChild(crimg);
}
</script>
</body>
</html>

来自documentation of render

  

上下文:要添加到模板上下文的值字典。默认情况下,这是一个空字典。如果字典中的值是   可以调用,视图将在渲染模板之前调用它。

意味着,字典中的值与渲染函数的已知参数def index(request): comments = Comment.objects.order_by('-date_added') context ={'comments': comments} return render(request,'guestbook/index.html', context=context) ^^^^^^^^^^^^^^^ 一起使用,这些值将被发送到模板。然后,您可以通过html模板中的字典(作为上下文发送)的context或案例{{ key }}访问这些值。可以在此SO Answer中找到有关上下文的更多信息。