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
相关产品推荐
相关产品推荐

