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

Django:如何从超链接列表中获取列表项内容并传递到views.py

解决方法

你当前的写法存在三个核心问题:

  • a标签的name属性不会被GET请求自动携带,只有表单内的输入类元素值才会在表单提交时被传递
  • urls.py中路径开头不能加斜杠,否则会触发Django的路径匹配异常
  • views.py中获取参数的键名存在拼写错误,和html中定义的pot_address不一致

方法一:直接给a标签拼接GET参数(推荐,改动最小)

直接把地址参数拼在a标签的跳转链接里,不需要额外表单:

修改HTML代码

<ul>
{% for item in list_addresses %}
    <li><a href="{% url 'analytics' %}?pot_address={{ item.post_code }}" >{{ item.post_code }}</a></li>
{% endfor %}
</ul>

修改urls.py代码

把路径开头的斜杠去掉,Django的path定义不需要前置斜杠:

urlpatterns = [
    path('', views.home, name = 'home'),
    path('analytics/', views.analytics, name = 'analytics'),
]

修改views.py代码

修正拼写错误,同时加默认值避免参数不存在时报错:

def analytics(request):
    if request.method == 'GET':
        pot_address = request.GET.get('pot_address', '')
        # 后续从数据库拉取数据的逻辑

方法二:用表单提交实现(适合需要传递更多参数的场景)

如果后续需要传递多个参数,可以给每个候选地址加单独的表单,用按钮模拟a标签样式:

<ul>
{% for item in list_addresses %}
<li>
    <form action="{% url 'analytics' %}" method="GET" style="display:inline;">
        <input type="hidden" name="pot_address" value="{{ item.post_code }}">
        <button type="submit" style="background:none;border:none;color:blue;text-decoration:underline;cursor:pointer;">
            {{ item.post_code }}
        </button>
    </form>
</li>
{% endfor %}
</ul>

urls和views的修改规则和方法一完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:03