自我上次提问以来:Python images display
我明白,从我得到的所有答案中,glob.glob可能是我需要的唯一方向。
然而我现在被困在哪里就在这里:
我可以使用glob.glob创建一个包含媒体目录中所有文件名的列表:
all = glob.glob("/Path_to_MEDIA/*/*.jpg")
但是如何使用它并创建一个非常简单的图像显示,其中一个下一个按钮调用我的MEDIA_ROOT中的文件并显示它们。
我所知道的是:
我有一个看起来像默认目录索引的模板:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en-us" />
<meta name="robots" content="NONE,NOARCHIVE" />
<title>Index of {{ directory }}</title>
</head>
<body>
<h1>Index of {{ directory }}</h1>
<ul>
{% ifnotequal directory "/" %}
<li><a href="../">../</a></li>
{% endifnotequal %}
{% for f in file_list %}
<li><a href="{{ f|urlencode }}">{{ f }}</a></li>
{% endfor %}
</ul>
</body>
</html>
我需要在视图中创建一个def,将glob.glob中的列表提供给此模板或类似模板。
我不知道的事情:
在这里:
感谢您的时间!
答案 0 :(得分:0)
在urls.py中创建带有额外上下文的直接模板网址:
from django.views.generic.simple import direct_to_template
...
url(r'^whatever', direct_to_template,
{ 'template':'foo.html', 'extra_context': {'files':myfiles} }
name='whatever' ),
上面的 myfiles 是您文件的列表/元组。但是,请确保使用MEDIA_URL格式化文件列表,而不是基于MEDIA_PATH。例如:
myfiles = [ 'relative/path/foo.jpg',
'http://static.mysite.com/absolute/path/bar.jpg' ]
虽然显然是从您的案例中的文件系统生成的,但不是硬编码列表。你可以在视图中完成工作,而不是使用直接模板 - 只需确保将文件键/值放入上下文中:
def myview( request ... ):
context = RequestContext(request)
context[files]=myfiles
return render_to_respone( ..., context_instance=context )
然后,在您的模板 foo.html :
中{% for file in files %}
<img src='YOUR_MEDIA_URL_HERE/{{ file }}' />
{% endfor %}