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

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配置适配:
    # 视图函数设置默认值
    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})
    
    对应的URL可调整为:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:45:37