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

Django视图报错:edit_holiday()收到意外关键字参数slug

解决TypeError: edit_holiday() got an unexpected keyword argument 'slug'

这个错误的根源很清晰:你的URL配置里定义了<slug:slug>参数,但视图函数edit_holiday只设置了pk作为接收参数,当Django尝试把URL里的slug值传递给视图时,视图函数没有对应的参数来承接,所以抛出了这个类型错误。

下面给你两种贴合需求的解决方案,你可以根据实际场景选择:

方案一:修改视图函数,用slug查询对象(推荐)

这完全匹配你“URL返回自动生成slug”的需求,只需要调整视图的参数和对象查询逻辑:

from django.shortcuts import get_object_or_404

def edit_holiday(request, slug):
    # 通过slug查询对应的假期对象,找不到则返回404页面
    holiday = get_object_or_404(Holiday, slug=slug)
    # 后续的视图逻辑(比如表单实例化、提交处理等)...

方案二:调整URL配置(仅当你仍需保留pk参数时使用)

如果出于某些原因不想修改视图参数,也可以把URL中的slug替换回pk,但这样就无法在URL中显示slug了,不符合你的初始需求:

path('edit_holiday/<int:pk>/', login_required(views.edit_holiday), name='edit_holiday'),

额外的检查点

  1. 确认post_save信号正常工作:
    你的信号逻辑没问题,但要核对模型中的HolidayReason字段名称是否正确(Django模型字段通常推荐蛇形命名,比如holiday_reason,如果你的模型里确实是HolidayReason则忽略这条)。
  2. 模板中生成链接要传slug参数:
    在模板里反向解析编辑URL时,记得传递slug值,比如:
    <a href="{% url 'edit_holiday' holiday.slug %}">编辑该假期</a>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:45:29