在 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/
我想让我的 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/