Django:使用变量作为URL名称空间?

时间:2017-12-11 14:50:15

标签: django python-3.x django-templates django-views

我正在尝试为体育网站创建子菜单。每项运动都需要自己的子菜单。我遇到的问题是我需要命名空间本身是动态的。

SportListView返回这项运动,以便我可以根据这项运动过滤新闻文章。

查看:

class SportListView(ListView):
    template_name="sports/sport-home.html"
    context_object_name='sport_list'

def get_context_data(self, **kwargs):
    context = super(SportListView, self).get_context_data(**kwargs)
    context['sport_menu'] = get_object_or_404(Sport, 
sport_slug=self.kwargs['sport_slug'])
    return context

模板:

<nav class="navbar navbar-expand-lg main-nav">
    <a href="{% url 'sports:sport-home' sport_menu.sport_slug %}">
    {{sport_menu.name}}</a>
    <a href="{% url sport_menu.sport_slug 'monthly' %}">Monthly View</a>
</nav>

子菜单中的第一个链接正常工作。正如您所看到的,它有效地充当了每项运动的主页按钮。

另一方面,第二个链接没有。在错误消息中,它返回了运动的slug,但我无法将其作为命名空间。

我确实有一个应用程序及其URLs.py文件正确配置为当前的运动。所以我知道这不是问题所在。

编辑:

当前错误消息我正在使用此配置:

  

反击&#39;板球&#39;未找到。 &#39;蟋蟀&#39;不是有效的观点   功能或模式名称。

1 个答案:

答案 0 :(得分:1)

您可以使用add模板过滤器:

<a href="{% url sport_menu.sport_slug|add:':monthly' %}">Monthly View</a>