在 url 中使用多个 slug

Using multiple slugs in a url

我想让我的 url 保持活力和干净。 因此,我正在使用 slugs。

我现在的问题是,出现以下错误:

redefinition of group name 'slug' as group 2; was group 1 at position 42

我想我得到了那个错误,因为我的链条中有两个 slug。 作为参考,我有一个 ListView 到 ListView 到一个 UpdateView,所有导入来自 django.views.generic。第一个列表视图给了我第一个 slug,更新视图给了我第二个。

这是 url 模式(分布在应用程序中):

第一个列表视图:

urlpatterns = [
    url(r'^$', RestaurantListView.as_view(), name='restaurant-list'),
    url(r'^(?P<slug>[\w-]+)/menus/', include('menu.urls', namespace='menu')),
]

第二个列表视图:

urlpatterns = [
    url(r'^$', MenuListView.as_view(), name='menu-list'),
    url(r'^(?P<slug>[\w-]+)/', MenuUpdateView.as_view(), name='menu-detail'),
]

在模板中,我通过以下方式获取对象:

<li><a href='{{obj.get_absolute_url}}'> {{obj}} </a></li>

我在各个模型中定义的:

def get_absolute_url(self):
        return reverse('restaurants:menu:menu-detail', kwargs={'slug': self.slug})

def get_absolute_url(self):
        return reverse('restaurants:menu:menu-list', kwargs={'slug': self.slug})

所以最后得到的模式是:

restaurants/(?P<slug>[\w-]+)/menus/(?P<slug>[\w-]+)/

我该如何解决才能不再收到错误消息?

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

了解更多详情https://docs.djangoproject.com/en/1.11/topics/http/urls/