gpt4 book ai didi

python - Django:如何从 Django 模板中的 object_list 索引图像

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:45 25 4
gpt4 key购买 nike

所以基本上我想知道如何使用 for 循环在 django 模板中索引图像。这个想法是使用您的用户添加到模型中的前三张图像创建幻灯片放映

模型.py

 class Product(models.Model):
Name=models.CharField(max_length=120,null=True,blank=True)
Category=models.CharField(max_length=80,null=True,blank=True)
Image=models.ImageField(null=True,upload_to='Image')
Description=models.TextField(null=True,blank=True)
Price=models.DecimalField(default=0.00,max_digits=10,decimal_places=2)
Delivery_date=models.DateTimeField(null=True,blank=True)
Delivered=models.BooleanField(default=False)

这是模板,但 obj.Image.url 标签不完整,因为我只想要前三个项目,而不是在循环中,但列出了

{% for obj in object_list %}

{% if obj.Image %}
<ul class="pgwSlider">
<li><img src="{{ obj.Image.url }}"></li>
<li>
<img src="">
<span>Shanghai, China</span>
</li>
</ul>
{% endif %}
{% endfor %}

最佳答案

如果您只需要 3 张图片(也许是最新的,对吧),您只需将自己的图片上下文从 View 传递到模板即可。

也许您正在使用 ListView , 那么你必须使用 get_context_data传递其他上下文数据。

这是 get_context_data 的简单用法.如果您想了解更多信息,可以查看django official documents for simple mixins (官方文档真的很有帮助!)

您的 View 示例

...
def get_context_data(self, **kwargs):
context = super(YourListView).get_context_data(**kwargs)
context['top_three_images'] = [
product.Image.url
for product in Product.objects.exclude(Image=None)[:3]
]
return context

You can use your own code instead of list comprehension.

然后你可以简单地使用top_three_images在模板中。您的模板

    {% for image_url in top_three_images %}
<img src="{{ image_url}}" alt="">
{% endfor %}

p.s. I recommend you to use your model field starting with lower_case (i.e. name, category, image ...)

更新

您只想在循环中显示前三张图片,对吗?

如果我没理解错的话,我认为foorloop.coutner也许有帮助。

在html中,你可以使用{% if forloop.counter < 4 %} (forloop 以 1 开头)

{% for obj in object_list %}

{% if forloop.counter < 4 %}
<ul class="pgwSlider">
<li><img src="{{ obj.Image.url }}"></li>
<li>
<img src="">
<span>Shanghai, China</span>
</li>
</ul>
{% endif %}
{% endfor %}

希望有帮助。

关于python - Django:如何从 Django 模板中的 object_list 索引图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com