Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python图像显示Django_Python_Django_Image - Fatal编程技术网

Python图像显示Django

Python图像显示Django,python,django,image,Python,Django,Image,自从我在这里提出最后一个问题以来: 我明白,从我得到的所有答案中,glob.glob可能是我唯一需要的方向 然而,我现在被困在这里: 我可以使用glob.glob创建包含媒体目录中所有文件名的列表: all = glob.glob("/Path_to_MEDIA/*/*.jpg") 但是,我如何使用它,并创建一个非常简单的图像显示,其中包含一个“下一步”按钮,该按钮调用我的媒体根目录中的文件并显示它们 我知道的是: 我有一个类似于默认目录索引的模板: <!DOCTYPE html PUB

自从我在这里提出最后一个问题以来:

我明白,从我得到的所有答案中,glob.glob可能是我唯一需要的方向

然而,我现在被困在这里:

我可以使用glob.glob创建包含媒体目录中所有文件名的列表:

all = glob.glob("/Path_to_MEDIA/*/*.jpg")
但是,我如何使用它,并创建一个非常简单的图像显示,其中包含一个“下一步”按钮,该按钮调用我的媒体根目录中的文件并显示它们

我知道的是:

  • 我有一个类似于默认目录索引的模板:

    <!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>
    
    
    {{directory}}的索引
    {{directory}}的索引
    
      {%ifnotequal目录”/“%}
    • {%endifnotequal%} {文件中f的%u列表%}
    • {%endfor%}
  • 我需要在视图中创建一个def,将列表从glob.glob提供给此模板或类似模板

  • 我不知道的是:

    • 视图中的def必须是什么样子
    在这里:

    • 在浏览器中显示一个图像、声音需要写些什么
    • 我需要写些什么来显示图像、声音的列表

    谢谢你的时间

    使用url.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是文件的列表/元组。但是,请确保按照媒体URL而不是基于媒体路径格式化文件列表。例如:

    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中:

    {%用于文件中的文件%}
    {%endfor%}
    
    谢谢!有趣。在哪里指定myfiles?在Model.py中,views.py,def在View中,Model?顶部的块在urls.py中,因此我的文件也可以从那里填充。我这样做是为了一个博客,在那里计算“热门故事”,因为它们在多个视图之间共享。然而,你可以把它放在其他地方,然后在那里调用它。或者,如果您愿意,您可以编写自己的视图,而不是执行常规视图,并且只需确保将文件键/值添加到您的上下文中即可。
    {% for file in files %}
      <img src='YOUR_MEDIA_URL_HERE/{{ file }}' />
    {% endfor %}