Can't give href to a link, error: "Reverse for 'foo' not found"

Can't give href to a link, error: "Reverse for 'foo' not found"

我是 django 的新手,我得到的错误是:"Reverse for 'influencers' not found. 'influencers' is not a valid view function or pattern name"。我想要做的是将两个不同的 urls (site.com && site.com/influencers) 重定向到同一个视图。这是因为我有一个侧面菜单,其中包含一个名为 "Influencers" 的选项卡,我希望此 link 和 "mysite.com" 都能正常工作。我什至接受了不使用 mysite。com/influencers 并尝试了 href="{% url '' %}" 之类的东西,但它也没有用。

这一行在我的 base.html 文件中导致错误:

<a href="{% url 'app1:influencers' %}" class="side_link">  >&nbsp Influencers</a>

这是我的观点:

class InfluencerList(LoginRequiredMixin, ListView):
    model = Influencer

那是我的 urls.py 文件:

app_name = 'app1'
urlpatterns = [

    path('', InfluencerList.as_view()),
    path('influencers', InfluencerList.as_view()),
]

感谢任何帮助或建议。

您需要指定路径的名称

app_name = 'app1'

urlpatterns = [
    path('', InfluencerList.as_view()),
    path('influencers', InfluencerList.as_view()<b>, name='influencers'</b>),
]

我觉得有点“奇怪”,你在两个不同的路径上使用完全相同的视图。最好只列出一次相同的视图(具有相同的参数等)。

编辑:您可以使用 RedirectView [Django-doc] 让第一个路径重定向到第二个路径,例如:

from django.views.generic.base import <b>RedirectView</b>

app_name = 'app1'

urlpatterns = [
    path('', <b>RedirectView.as_view(pattern_name='app1:influencers')</b>),
    path('influencers', InfluencerList.as_view(), name='influencers'),
]