Django模板没有从视图加载变量

时间:2017-10-18 12:35:22

标签: python html django

我在Django中创建了一个模板,并初始化了一个非常简单的HTML代码,只是为了使用从views.py文件加载的一些变量来测试它。加载了HTML文件,但变量不是。奇怪的是,当我检查元素时,我看到了这个: enter image description here

以下是我的代码:

views.py:

from django.http import HttpResponse
from django.template import loader
from .models import Structure

def index(request):
    all_structures = Structure.objects.all()
    template = loader.get_template('Structures/index.html')
    context = {
        'all_structures': all_structures,
    }
    return HttpResponse(template.render(context, request))

def detail(request, structure_id):
    return HttpResponse("<h2>Details for Structure id " + str(structure_id) + "</h2>")

的index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <ul>
      {% for structure in all_structures %}
      <li><a href="/structures/{{ structures.id }}/">{{ structures.name }}</a></li>
      {% endfor %}
    </ul>
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

您的变量名为structure,请删除s

<li><a href="/structures/{{ structure.id }}/">{{ structure.name }}</a></li>

关于我发现此threadSA password protected entry checker,它似乎不是django,而是防病毒软件或某些浏览器扩展程序。

答案 1 :(得分:0)

我认为你应该写这样的函数:

def index(request):
    all_structures = Structure.objects.all()
    context = {
        'all_structures': all_structures,
    }
    return render(request, 'Structures/index.html', context)

然后:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <ul>
      {% for structure in all_structures %}
      <li><a href="/structures/{{ structure.id }}/">{{ structure.name }}</a></li>
      {% endfor %}
    </ul>
  </body>
</html>

您必须撰写{structure.field}而不是{structures.field}