我在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>
答案 0 :(得分:0)
您的变量名为structure
,请删除s
<li><a href="/structures/{{ structure.id }}/">{{ structure.name }}</a></li>
关于我发现此thread的SA 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}