我需要在html django模板中创建一个带有选择dinamically创建的表单:我从txt文件中读取值并将其存储在dict中,当我调用render来响应时我通过了这个dict但是当我尝试要在模板中打印其值,它不会打印任何内容。 这是我的观点:
def home(request):
i=0
d = {}
with open("static/my_file.txt") as f:
for line in f:
key=i
val = line.rstrip()
d[int(key)] = val
i=i+1
return render_to_response('home.html', var=d)
这是html模板中的打印:
{% for val in var %}
{{ val.value }}
{% endfor %}
可以帮帮我吗?
答案 0 :(得分:3)
Django documentation for for
-loops in templates表明dicts的语法略有不同。尝试:
{% for key, value in var.items %}
{{ value }}
{% endfor %}
答案 1 :(得分:1)
尝试使用此代替上述jinja文件。
如果您只需要var
的值,并且var
是字典,那么以下代码将适合您。
{% for val in var.values() %}
{{ val }}
{% endfor %}
答案 2 :(得分:1)
您在视图中有错误,您需要将上下文作为字典传递 来自django.shortcuts导入渲染
def home(request):
i=0
d = {}
with open("static/my_file.txt") as f:
for line in f:
key=i
val = line.rstrip()
d[int(key)] = val
i=i+1
return render(request,'home.html', {'var':d})
答案 3 :(得分:0)
如果你想将view.py中的变量或所有可用变量(局部变量)传递给你的模板,只需在你的情况下传递locals():
view.py:
def home(request):
i=0
d = {}
with open("static/my_file.txt") as f:
for line in f:
key=i
val = line.rstrip()
d[int(key)] = val
i=i+1
return render('home.html', locals())
模板:
{% for key,value in d.items %}
{{ value }}
{% endfor %}