Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 - Fatal编程技术网

Python Django返回不同的图像

Python Django返回不同的图像,python,django,Python,Django,我有一个3 x 3的网格,我试图返回随机选择的图像,这些图像不同于给定的目录 我目前得到的图像作为输出,但其中一些是重复的 目录中总共有10个图像,都以数字命名 当前输出的屏幕截图: 我应该怎么做才能获得清晰的图像作为输出? 附言:我是Django的新手,所以任何帮助都将不胜感激 random_Image.py-返回所选图像列表的模板标记 random\u Image.py:输出“文件” {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.j

我有一个3 x 3的网格,我试图返回随机选择的图像,这些图像不同于给定的目录

  • 我目前得到的图像作为输出,但其中一些是重复的

  • 目录中总共有10个图像,都以数字命名

  • 当前输出的屏幕截图:


  • 我应该怎么做才能获得清晰的图像作为输出?

    附言:我是Django的新手,所以任何帮助都将不胜感激


    random_Image.py-返回所选图像列表的模板标记

    random\u Image.py:输出“文件”

    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    
    1.jpg
    3.jpg
    2.gif
    6.jpg
    9.jpg
    9.jpg
    7.jpeg
    2.gif
    8.jpg
    8.jpg
    1.jpg
    7.jpeg
    3.jpg
    
    random_Image.py-输出“random.choice(最终_列表)”

    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    {'2.gif', '5.jpg', '6.jpg', '1.jpg', '9.jpg', '8.jpg', '4.jpg', '7.jpeg', '3.jpg'}
    
    1.jpg
    3.jpg
    2.gif
    6.jpg
    9.jpg
    9.jpg
    7.jpeg
    2.gif
    8.jpg
    8.jpg
    1.jpg
    7.jpeg
    3.jpg
    

    pickfeel.html-*使用模板标记的位置(显示的是第1行,共有3行)


    每次调用标签都会从现有的十个图像中随机选择一个图像。这些调用是完全独立的,标签的代码无法知道前一个调用返回了哪个图像(即使之前有任何调用也无法知道)

    最简单的解决方案是让标记返回图像列表,将该列表存储在templatevar中,然后对其进行迭代:

    @register.simple_tag
    def random_images(count=3):
        valid_extensions = ('.jpg', '.jpeg', '.png', '.gif')
        # NB: 
        # 1. you should use `os.path.join()` to create your file path
        # 2. you shoudn't hard code this path
        # 3. `f[f.rfind("."):len(f)]` can be simplified as `f[f.rfind("."):]`
        # ... and well, there are other ugly things, but anyway ;-)
    
        files = [f for f in os.listdir(settings.BASE_DIR + '/app_pickfeel/static/app_pickfeel/images')
                 if f[f.rfind("."):len(f)] in valid_extensions]
    
        # this is useless, you won't have duplicates in a directory file listing
        # (file names are unique within a directory)
    
        return [rand_dir + filename for filename in random.sample(files, count)]
    
    然后

        {% random_images 3 as images %}
        <div class="row no-pad display-flex  my-row">
            {% for image in images %}
            <div class="....">
                <img class="img-thumbnail" src="{{ MEDIA_URL}}{{ image }}">
            </div>
            {% endfor %}
        </div>
    
    {%random_图像3作为图像%}
    {%用于图像中的图像%}
    {%endfor%}
    
    太好了,非常感谢您的帮助和详细回复。
        {% random_images 3 as images %}
        <div class="row no-pad display-flex  my-row">
            {% for image in images %}
            <div class="....">
                <img class="img-thumbnail" src="{{ MEDIA_URL}}{{ image }}">
            </div>
            {% endfor %}
        </div>