在网址中使用多个slu ..

时间:2017-11-30 16:57:20

标签: regex django url slug

我想保持我的网址动态和干净。 因此,我使用slu ..

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

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

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

这是网址模式(遍布应用):

第一个列表视图:

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-]+)/

如何修复它以便我不再收到错误?

1 个答案:

答案 0 :(得分:1)

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),
]

enter image description here

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