-1

NoReverseMatch at / Reverse for 'Jersey' 未找到任何参数。尝试了 1 种模式:['Jersey/(?P[^/]+)/$']

下面是我的代码views.py

class JerseyView(TemplateView):
        #paginate_by=3
     template_name='Ecommerce/Jersey.html'
    
     def get_context_data(self, **kwargs):    
         et =super(JerseyView, self).get_context_data(**kwargs)
         et['United']= Item.objects.filter(category="3").filter(subcategory="9")
         et['Chelsea']= Item.objects.filter(category="3").filter(subcategory="10")
         return et 

下面是我的代码urls.py

path('Jersey/<slug>/', JerseyView.as_view(), name="Jersey" ),

我在导航栏中将此链接称为

<a class="dropdown-item" href="{% url 'Ecommerce:Jersey' %}">Men's Clothing</a>

当我单击它时,它给我的错误是 NoReverseMatch at / Reverse for 'Jersey',没有找到任何参数。尝试了 1 种模式:['Jersey/(?P[^/]+)/$'] 我不知道我是否遗漏了什么,因为我检查了拼写但仍然出现相同的错误

4

2 回答 2

0

通过使用{% url 'Ecommerce:Jersey' %},您尝试在Jersey/<slug>不提供任何参数的情况下访问路径。所以 Django 路由器期望在这条路径上有一个参数(slug)。

你需要提供它,(只有你知道那里有什么蛞蝓......)像这样:

{% url 'Ecommerce:Jersey' Jersey.slug %}

于 2020-12-26T21:41:30.263 回答
0

这个蛞蝓是动态变化的吗?如果是这样,那么首先您应该像这样更正您的网址: 'Jersey/<slug:slug>/'在 href 标记中,从您在 views.py 中传递的上下文中获取 slug,就像用户 BriseBalloches 所说的那样。但是如果你的 slug 是一个固定参数,你可以把它写在 href 标签中。假设你的 slug 参数是country你的 href 标签应该使用href="Jersey/country"href="{% url 'Ecommerce:Jersey'country %}"

这些 href 标签会生成http://127.0.0.1:8000/Jersey/country

于 2020-12-27T13:31:40.277 回答