在django中的html模板中传递变量

时间:2017-08-01 11:09:14

标签: python django django-templates

我需要在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 %}

可以帮帮我吗?

4 个答案:

答案 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 %}