Django模板渲染问题

时间:2013-06-30 11:32:09

标签: python django model-view-controller django-templates

我是python的新手,但是我从MV体验中对MVC有了一个很好的想法。 我在视图中有以下python代码

from django.http import HttpResponse
from django.template.loader import render_to_string

class MyListClass:
    def __init__(self, link, text):
        self.link = link
        self.text = text                

def index(request):
    list1 = MyListClass("hi","_hi_")
    list2 = MyListClass("hello","_hello_")
    bullets = [list1,list2]
    return HttpResponse(render_to_string("nest.html"), {"bullets": bullets})

以及HTML模板中的以下代码段

{% for bullet in bullets %}
<h2>
  <a href="{{ bullet.link }}">
    {{ bullet.text }}
  </a>
</h2>
{% endfor %}

但是这些值不是在html中发布的,而其他静态文本是从HTNL中呈现的。 根据{{​​3}},通过的对象必须是dictonary。 如果我在某个地方出错了,请告诉我。

1 个答案:

答案 0 :(得分:2)

虽然您的代码应该可行(假设您将上下文传递给您发现的正确方法),但通常使用render方法而不是直接构建HttpResponse

from django.shortcuts import render


def index(request):
    bullets = [
        MyListClass("hi", "_hi_"),
        MyListClass("hello", "_hello_")
    ]
    return render(request, "index.html", {"bullets": bullets})