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

Django开发:点击按钮后获取并展示特定捐赠数据的问题及报错排查

看起来你遇到的问题主要有两个核心点:一是URL传递的捐赠ID没被视图正确接收,触发了TypeError;二是当前视图还没实现获取单个捐赠详情的逻辑。我来一步步帮你解决:

1. 修复视图函数,获取单个捐赠详情

首先要修改你的视图,让它能接收URL传来的捐赠ID,然后通过ID精准获取对应的捐赠对象。推荐用get_object_or_404,它会自动处理对象不存在的情况,返回404页面,比直接用get()更友好:

from django.shortcuts import render, get_object_or_404
from .models import Donation

def acceptdonation(request, donation_id):
    # 通过ID获取指定捐赠,不存在则返回404页面
    donation = get_object_or_404(Donation, id=donation_id)
    context = {'donation': donation}
    return render(request, 'acceptdonation.html', context)
2. 配置正确的URL路由

你的URL配置需要把捐赠ID作为参数传递给视图。在对应的urls.py里,修改或添加这条路由:

from django.urls import path
from . import views

urlpatterns = [
    # 保留你已有的其他URL...
    path('donations/<int:donation_id>/', views.acceptdonation, name='accept_donation'),
]

这里的<int:donation_id>是Django的路径转换器,它会把URL里的数字(比如你请求的59)转换成整数,作为donation_id参数传给视图函数。这就是你之前报错的根源——原来的路由传了参数,但视图没接收,导致参数不匹配。

3. 调整列表页的按钮链接

在available supplies.html的循环里,给"查看详情"按钮设置正确的跳转链接,用Django的url模板标签生成带ID的URL:

{% for donation in donations %}
    <!-- 这里是你已有的捐赠信息展示代码 -->
    <button><a href="{% url 'accept_donation' donation.id %}">查看详情</a></button>
{% endfor %}

这样用户点击某个捐赠的按钮时,就会跳转到对应的详情页,比如/donations/59/。

4. 在详情页模板展示捐赠信息

最后在acceptdonation.html里,就可以直接通过{{ donation }}调用字段展示详情了:

<div class="donation-detail">
    <h2>{{ donation.title }}</h2>
    <p><strong>联系方式:</strong>{{ donation.phonenumber }}</p>
    <p><strong>分类:</strong>{{ donation.category }}</p>
    <p><strong>数量:</strong>{{ donation.quantity }}</p>
</div>

这样一套流程走下来,就能实现点击查看单个捐赠详情的功能,同时解决你遇到的TypeError问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:07:32