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

Django类视图反向URL报错:无法匹配带id的read_hairbty路由

问题原因

read_hairbty的URL路由要求必须传入pk参数(对应会员ID),但你在HBTYOrderView中直接用reverse_lazy('read_hairbty')生成成功跳转地址时,没有传递这个必填参数,导致Django无法匹配到对应的路由规则。

解决方法

重写HBTYOrderView的get_success_url方法,根据刚创建的预约关联的会员ID生成正确的跳转地址:

class HBTYOrderView(BSModalCreateView):
    model = HbtyOrder
    template_name = 'accounts/modals/hairbty/create_hbtyordr.html'
    form_class = HairbtyOrderForm
    success_message = 'Success: Appointment was created.'

    # 替换原success_url属性,重写get_success_url方法
    def get_success_url(self):
        # 获取当前创建的预约所属的会员ID
        customer_id = self.object.hbtycustomer_id
        # 传递pk参数生成正确路由地址
        return reverse_lazy('read_hairbty', kwargs={'pk': customer_id})
额外检查点
  • 确保HairbtyOrderForm表单包含hbtycustomer_id字段(可设为隐藏字段),或在视图的form_valid方法中手动赋值该字段,否则self.object.hbtycustomer_id会为空,跳转仍会失败。
  • HBTYReadView中的pk_url_kwargs = 'hbtycustomer_id'是多余的,你的URL参数名为pk,且视图get_queryset已用self.kwargs['pk']取值,删除该属性可避免混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:45:36