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

Django反向解析showuser路由传参不匹配报错如何解决

Django showuser路由反向解析报错修复方案

报错信息

Reverse for 'showuser' with keyword arguments '{'bid': 1}' not found. 1 pattern(s) tried: ['showuser/(?P[0-9]+)\Z']

错误原因

共3处代码问题直接触发报错:

  • 模板{% url %}标签语法错误:int:是urls.py专属的路径类型转换器,模板标签内不需要写;且传参名和路由定义的参数名不匹配,路由要求参数名为broadcastid,实际传入的是bid,直接导致反向解析匹配失败。
  • 视图层重定向方法使用错误:HttpResponseRedirect仅接收目标路径字符串作为入参,不支持直接传入模板上下文字典;硬编码路径名做跳转也容易出现匹配异常。
  • 路由定义不规范:路径末尾未加斜杠,和Django默认的APPEND_SLASH配置逻辑冲突,容易触发不必要的301重定向。

对应修复代码

1. 修正urls.py路由

补全路径尾部斜杠,保持参数名不变:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('showuser/<int:broadcastid>/', views.showuser, name="showuser"),
]

2. 修正adduser.html模板标签

删除多余的int:前缀,保证参数名和路由定义的broadcastid完全一致:

<!-- adduser.html -->
<a href="{% url 'showuser' broadcastid=adduser.id %}" class="btn btn-primary">
    Add Existing User
</a>

*注意:此处传入的adduser.id必须是主表BroadcastListSms的主键值,如果当前模板上下文里的adduser是AddContact外键对象,需要替换为adduser.broadcast_list_id取关联主表ID,否则会传错参数值。

3. 修正views.py重定向逻辑

用reverse方法反向解析目标路径,不要给重定向方法传模板字典:

# views.py
from django.shortcuts import render
from django.urls import reverse
from django.http import HttpResponseRedirect
from .models import BroadcastListSms, AddContact

def showuser(request, broadcastid):
    vrbrlstnm = BroadcastListSms.objects.get(id=broadcastid)
    showDepartment = AddContact.objects.values('dept_nm').distinct()
    if request.method == "GET":
        select_val = request.GET.get('select')
        if select_val == "All":
            departmentData = AddContact.objects.all()
        else:
            departmentData = AddContact.objects.filter(dept_nm=select_val)
        return render(request, "showuser.html", {
            'adduser': vrbrlstnm,
            'showDepartment': showDepartment,
            'departmentData': departmentData
        })
    # POST逻辑处理完成后重定向回对应页面,通过reverse生成正确路径
    return HttpResponseRedirect(reverse('showuser', kwargs={'broadcastid': broadcastid}))

修改完成后重启Django服务,报错即可解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:39:35