Python Django返回不同的图像
我有一个3 x 3的网格,我试图返回随机选择的图像,这些图像不同于给定的目录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
我应该怎么做才能获得清晰的图像作为输出? 附言:我是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>