[英]Python images display Django
自从我最后一个问题在这里: Python图像显示
我知道,从所有答案中我都可以找到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馈送到此模板或类似模板。
我不知道的是:
和这里:
感谢您的时间!
使用urls.py中的额外上下文创建直接指向模板的url:
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 %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.