Django项目报错:categoryFilter()缺少必填参数category_slug
Django视图
categoryFilter()缺少category_slug参数的解决思路 排查URL配置(website/urls.py)
- 确认URL路径中是否正确定义了
category_slug参数,参数名必须和视图函数的参数完全一致:# 正确示例 from django.urls import path from . import views urlpatterns = [ path('portfolio/category/<slug:category_slug>/', views.categoryFilter, name='portfolio-category'), ] - 检查模板(Portfolio-category.html)中URL反向解析是否传递了该参数:
错误写法通常是未传递<!-- 正确示例:传递category的slug值 --> <a href="{% url 'portfolio-category' category_slug=category.slug %}">{{ category.name }}</a>category_slug参数,比如{% url 'portfolio-category' %}
检查视图函数定义(website/views.py)
- 确保
categoryFilter函数的参数顺序正确,request作为第一个参数,category_slug紧随其后:def categoryFilter(request, category_slug): # 获取对应分类 category = Category.objects.get(slug=category_slug) # 业务逻辑处理 return render(request, 'website/Portfolio-category.html', {'category': category}) - 若需要让
category_slug为可选参数,可给参数设置默认值,同时调整URL配置适配:
对应的URL可调整为:# 视图函数设置默认值 def categoryFilter(request, category_slug=None): if category_slug: category = Category.objects.get(slug=category_slug) else: # 处理无分类筛选的逻辑 category = None return render(request, 'website/Portfolio-category.html', {'category': category})path('portfolio/category/<slug:category_slug>/', views.categoryFilter, name='portfolio-category'), path('portfolio/category/', views.categoryFilter, name='portfolio-category-all'),
检查模型定义(website/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)
内容的提问来源于stack exchange,提问作者erselbal
相关产品推荐
相关产品推荐

