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

Django项目报错:rant_category()收到意外关键字参数'slug'

解决Django里rant_category() got an unexpected keyword argument 'slug'报错

1. 给视图函数补上slug参数

报错核心是rant_category视图没接收slug参数,但URL里传递了这个值,直接在视图中添加参数即可。修改views.py:

def rant_category(request, slug):
    # 通过slug获取对应分类,找不到则返回404
    category = get_object_or_404(Category, slug=slug)
    # 示例:获取该分类下的所有rant内容
    rants = category.rant_set.all()
    return render(request, '你的模板路径.html', {'category': category, 'rants': rants})

2. 确认URL配置正确传递slug

检查urls.py中的URL规则,用<slug:slug>捕获URL中的slug部分并传递给视图:

from django.urls import path
from . import views

urlpatterns = [
    # 保留其他URL规则
    path('category/<slug:slug>/', views.rant_category, name='rant_category'),
]

3. 确保Category模型有slug字段且自动生成

打开models.py,给Category添加slug字段,设置自动生成逻辑避免手动输入:

from django.db import models
from django.utils.text import slugify

class Category(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True, blank=True)

    def save(self, *args, **kwargs):
        # 未设置slug时,用分类名自动生成
        if not self.slug:
            self.slug = slugify(self.name)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.name

执行迁移命令更新数据库:

python manage.py makemigrations
python manage.py migrate

4. 模板里正确生成带slug的URL

在HTML模板中,使用url标签生成对应链接,传递分类的slug值:

<a href="{% url 'rant_category' category.slug %}">{{ category.name }}</a>

内容的提问来源于stack exchange,提问作者Vicente Antonio G. Reyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:23:23