0

我想在 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 的真正初学者,我想知道这个模板和视图的东西是如何连接的 :) 如果这个问题真的很愚蠢,请不要讨厌我 :(

4

3 回答 3

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 %}
于 2013-10-22T14:18:13.083 回答
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>
于 2013-10-22T14:15:09.627 回答
0

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

渲染(请求,模板名称 [,字典] [,上下文实例] [,内容类型] [,状态] [,当前应用程序] [,目录])

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

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

from django.shortcuts import render

def index(request):
    dir = "/home/ubuntu/newproject/static"
    return render('sslcert/index.html', {'files': os.listdir(dir)})
于 2013-10-22T14:41:40.963 回答