Django中get_object_or_404()遇意外'slug'参数TypeError错误
Django电商项目分类链接TypeError问题排查与解决
错误现象
点击“vegetables”“cotton dress”分类链接时,访问路径/vegetables/触发TypeError,提示get_object_or_404() got an unexpected keyword argument 'slug'。
错误原因分析
结合代码和错误提示,核心可能原因如下:
- 数据库未同步:Category模型中定义了
slug字段,但未执行数据库迁移操作,导致数据库表中不存在该字段,查询时触发参数不匹配错误。 - 模型导入错误:views.py中导入的Category并非项目自身定义的模型(比如误导入第三方应用的同名Category),该模型没有
slug字段。 - 拼写失误:实际项目中可能存在
slug字段名拼写错误(如写成sluge),导致查询参数与模型字段不匹配。
解决方案
1. 同步数据库迁移
如果是数据库未同步导致的问题,执行以下命令将模型变更同步到数据库:
python manage.py makemigrations python manage.py migrate
2. 确认模型导入正确性
检查views.py中的导入语句,确保导入的是当前应用的Category模型:
# 正确的相对导入方式 from .models import Category
避免导入其他应用或第三方库中的同名模型。
3. 验证字段名拼写
确认Category模型中的字段名确实为slug,无拼写错误:
class Category(models.Model): # 确保字段名正确为slug slug = models.SlugField(max_length=250, unique=True) # 其他字段定义...
4. 检查链接生成逻辑
确保模板(如navbar.html)中分类链接通过Category模型的get_url方法生成,避免手动硬编码路径:
<!-- 正确的分类链接生成方式 --> <a href="{{ category.get_url }}">{{ category.name }}</a>
内容的提问来源于stack exchange,提问作者Jimna
相关产品推荐
相关产品推荐

