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

Django设置URL可选month参数默认值时报KeyError如何解决?

错误原因

访问/dividends/路径时,URL没有传递month参数,视图的self.kwargs字典中不存在month键,直接通过self.kwargs['month']取值就会触发KeyError。

修复方案

方案1:直接修改视图取值逻辑(最简单,无需改动URL配置)

将视图中month的取值逻辑改为用dict.get()方法,不存在时默认返回None即可匹配你现有get_month函数的逻辑:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    divs = Dividends()
    # 把原来的self.kwargs['month']替换为下面这行
    month = self.kwargs.get('month')
    context['month'] = get_month(month)
    return context

方案2:优化URL配置,合并重复路径(可选,更简洁)

如果你不想写两条重复的path配置,可以用re_path把month设为可选参数,单条规则覆盖两种访问场景:

from django.urls import re_path

urlpatterns = [
    ...
    re_path(r'^dividends/(?:(?P<month>[a-zA-Z]+)/)?$', views.DividendView.as_view(), name='dividendview'),
]

注意事项

你当前的get_month函数在month为空时返回的是数字格式的月份(比如10),但路径传递的是字符串格式的月份缩写(比如Oct),如果业务需要统一格式,可以自行在get_month函数中补充转换逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:36:04