Django - 将文件名列表呈现为模板

时间:2011-11-29 01:04:35

标签: python django django-templates django-views twisted

我正在为图片库页面生成模板。我的方法如下:

  • 托管图像文件夹的子目录中的图像
    • 图片文件夹的标题与图库标题相同
  • 视图将文件名列表传递给模板
  • 模板遍历列表并创建img标记

所以我的观点是

def some_gallery(request):
    #LOGIC TO GET A LIST OF FILENAMES

    variables = RequestContext(request,{
        'user' : request.user,
        'title' : 'something',
        'files' : fileList
    })
    return render_to_response('gallery_template.html',variables)

和模板

....
{% for file in files %}
    <img src="/path/to/images/{{ title }}/{{ file }}">
{% endfor %}
....

我遇到的问题是当我尝试使用os.listdir函数时,Django会出现500错误。如何获取我需要的文件列表?

提供500错误的视图的有问题版本

def some_gallery(request):

    variables = RequestContext(request,{
        'user' : request.user,
        'title' : 'something',
        'files' : os.listdir('/path/to/gallery')
    })
    return render_to_response('gallery_template.html',variables)

另外我应该注意文件路径确实有效,所以如果我直接转到网址,我会按预期得到图片。

编辑:修复了代码示例中的拼写错误

2 个答案:

答案 0 :(得分:2)

您的字典不是有效的python代码,因为您使用的是“=”而不是“:”。它应该是:

variables = RequestContext(request,{
    'user' : request.user,
    'title' : 'something',
    'files' : os.listdir('/path/to/gallery')
})

最后一件事,listdir需要一个abosulte路径,你可以通过以下方式获得项目的根路径:

ROOT_PATH = os.path.abspath(os.path.dirname(__file__).decode('utf-8')).replace('\\', '/') 

答案 1 :(得分:2)

我把它整理好了。我的方法是正确的,所以任何想要做这类事情的人,代码样本都应该有用。

我遇到的问题是Django因为访问提供的文件路径时遇到一些问题而绊倒了listdir函数调用。我确保目录权限和路径是正确的并且有效。

感谢那些帮助过的人。