You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合JavaScript与Django模板实现图片高度切换调整?

Django实现图片高度切换的方案

需求场景

现有Django模型存储图片尺寸,视图筛选图片后在模板渲染,需要添加两个按钮:

  • 按钮1:将所有图片高度统一设为100px
  • 按钮2:恢复为模型中存储的原始高度

现有代码

模型定义

class Image(Work):
    size_height_cm = models.FloatField(null=True, blank=True)
    size_width_cm = models.FloatField(null=True, blank=True)
    size_depth_cm = models.FloatField(null=True, blank=True)

视图查询

works=Image.objects.filter(creator=self.kwargs['pk'])

原模板渲染

{% for work in works %}
<div class="work">
    <a href="../../work/{{ work.pk }}">
        <img class="work-object" src="{{ work.pic.url }}" alt="{{ work.name_complete }}" height="{{ work.display_height }}">
    </a>
</div>
{% endfor %}

实现步骤

1. 修改模板,存储原始高度

在img标签中添加data-original-height属性,把模型中的原始高度值绑定到DOM元素上,方便JavaScript读取:

{% for work in works %}
<div class="work">
    <a href="../../work/{{ work.pk }}">
        <img class="work-object" 
             src="{{ work.pic.url }}" 
             alt="{{ work.name_complete }}" 
             height="{{ work.display_height }}"
             data-original-height="{{ work.display_height }}">
    </a>
</div>
{% endfor %}

<!-- 添加控制按钮 -->
<button id="btn-set-100">按钮1(统一100px)</button>
<button id="btn-restore">按钮2(恢复原高度)</button>

2. 编写JavaScript处理点击事件

在模板底部(或单独的JS文件)添加以下代码,实现按钮的切换功能:

// 获取所有图片和按钮元素
const images = document.querySelectorAll('.work-object');
const setBtn = document.getElementById('btn-set-100');
const restoreBtn = document.getElementById('btn-restore');

// 按钮1:设置所有图片高度为100px
setBtn.addEventListener('click', () => {
    images.forEach(img => {
        img.setAttribute('height', '100');
    });
});

// 按钮2:恢复每个图片的原始高度
restoreBtn.addEventListener('click', () => {
    images.forEach(img => {
        const originalHeight = img.getAttribute('data-original-height');
        if (originalHeight) {
            img.setAttribute('height', originalHeight);
        }
    });
});

原理说明

借助HTML的data-*自定义属性,在模板渲染阶段就把每个图片的原始高度直接存储到对应的img元素上,JavaScript无需额外传递数据,直接从DOM元素读取原始高度值,就能实现批量修改和恢复的功能。

内容的提问来源于stack exchange,提问作者H C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:42:51