Django:使用模板中视图的变量

时间:2013-10-22 14:07:00

标签: python django

我想在django的模板中使用名为“files”的变量的内容。我的views.py看起来像这样:

from django.shortcuts import render

import os


def index(request):
        os.chdir("/home/ubuntu/newproject/static")
        for files in os.listdir("."):
                return render(request, 'sslcert/index.html','files')

我的名为“index.html”的模板如下所示:

<head>
        {% block title %}
        <h3>
                        Following directories are in this folder:
        </h3>
        {% endblock %}
</head>



<body>
        <<(HERE SHOULD BE THE OUTCOME OF THE VARIABLE LIST)>>
</body>

帮助也会非常酷和解释:/我是django的真正初学者,我想知道这个模板和视图的内容是如何连接的:)请不要讨厌我,如果这个问题真的很愚蠢:(< / p>

3 个答案:

答案 0 :(得分:3)

您可以将变量传递给模板,如下所示:

from django.shortcuts import render_to_response

def index(request):
    os.chdir("/home/ubuntu/newproject/static")
    for file in os.listdir("."):
        files.append(file)
    return render_to_response('sslcert/index.html', {'files':files})

在模板中,您可以使用它:

{{files}}

如果你想使用整个字段,或者你可以遍历它们

{% for file in files %}
# do something with file here
{% endfor %}

答案 1 :(得分:2)

做类似的事情:

from django.shortcuts import render
import os

def index(request):
        os.chdir("/home/ubuntu/newproject/static")
        files = []
        for file in os.listdir("."):
            files.append(file)

        context = {'files':files}
        return render(request, 'sslcert/index.html', context)

然后是模板:

<head>
        {% block title %}
        <h3>
              Following directories are in this folder:
        </h3>
        {% endblock %}
</head>

<body>
       {{ files }}
</body>

答案 2 :(得分:0)

渲染函数您正在使用的示例中获得了字典参数,可以扩展传递给模板的上下文

  

render(request,template_name [,dictionary] [,context_instance] [,content_type] [,status] [,current_app] [,dirs])

     

字典   要添加到模板上下文的值的字典。默认情况下,这是一个空字典。如果字典中的值是可调用的,则视图将在呈现模板之前调用它。

因此您可以将任何数据作为字典传递到模板中,哪些键在模板中可用作变量

from django.shortcuts import render

def index(request):
    dir = "/home/ubuntu/newproject/static"
    return render('sslcert/index.html', {'files': os.listdir(dir)})