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

Django实现点击ETF链接动态加载对应基准指数图表

解决方案

1. 更新URL配置(urls.py)

给charts页面添加带参数的路由,让它能接收index_ticker参数:

from django.urls import path
from . import views

urlpatterns = [
    path('etf-table/', views.etf_table, name='etf_table'),
    # 新增带index_ticker参数的charts路由
    path('charts/<str:index_ticker>/', views.etf_charts, name='etf_charts'),
]

2. 修改表格模板(table.html)

把每一行ETF数据改成可点击的跳转链接,将当前行的index_ticker作为参数传递给charts页面:

<table>
    <thead>
        <tr>
            <th>ETF代码</th>
            <th>ETF名称</th>
            <th>对应指数</th>
        </tr>
    </thead>
    <tbody>
        {% for etf in etf_list %}
        <!-- 点击整行跳转到对应charts页面 -->
        <tr onclick="window.location='{% url 'etf_charts' etf.index_ticker %}';" style="cursor: pointer;">
            <td>{{ etf.etf_ticker }}</td>
            <td>{{ etf.etf_name }}</td>
            <td>{{ etf.index_name }}</td>
        </tr>
        {% endfor %}
    </tbody>
</table>

如果不想用JS,也可以把单元格内容包在<a>标签里:

<tr>
    <td><a href="{% url 'etf_charts' etf.index_ticker %}">{{ etf.etf_ticker }}</a></td>
    <td><a href="{% url 'etf_charts' etf.index_ticker %}">{{ etf.etf_name }}</a></td>
    <td><a href="{% url 'etf_charts' etf.index_ticker %}">{{ etf.index_name }}</a></td>
</tr>

3. 调整视图函数(views.py)

修改charts视图,接收index_ticker参数并传递给模板,同时可添加参数合法性校验:

from django.shortcuts import render
from .models import ETF

def etf_table(request):
    # 原逻辑:获取所有ETF数据
    etf_list = ETF.objects.all()
    return render(request, 'table.html', {'etf_list': etf_list})

def etf_charts(request, index_ticker):
    # 可选:校验index_ticker是否存在,避免无效请求
    try:
        ETF.objects.get(index_ticker=index_ticker)
    except ETF.DoesNotExist:
        # 可返回404页面或自定义提示
        return render(request, '404.html')
    
    # 将index_ticker传给模板用于生成图表路径
    return render(request, 'charts.html', {'index_ticker': index_ticker})

4. 动态渲染图表(charts.html)

用传入的index_ticker变量动态拼接四张图表的静态文件路径:

<div class="charts-container">
    <img src="{% static 'charts/chart1_'|add:index_ticker|add:'.jpg' %}" alt="{{ index_ticker }} 图表1">
    <img src="{% static 'charts/chart2_'|add:index_ticker|add:'.jpg' %}" alt="{{ index_ticker }} 图表2">
    <img src="{% static 'charts/chart3_'|add:index_ticker|add:'.jpg' %}" alt="{{ index_ticker }} 图表3">
    <img src="{% static 'charts/chart4_'|add:index_ticker|add:'.jpg' %}" alt="{{ index_ticker }} 图表4">
</div>

注意:确保图表文件都放在static/charts/目录下,且项目已正确配置STATIC_URL和STATICFILES_DIRS。

额外优化建议

  • 给表格行添加hover样式,提升交互体验:
tr:hover {
    background-color: #f5f5f5;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:55:42