所以我在同一个应用程序中有两个模型具有几乎相同的url结构:
urlpatterns = patterns('',
#....
url(r'^prizes/', include(patterns('prizes.views',
url(r'^$', 'PrizeStore_Index', name="prizestore"),
url(r'^(?P<slug>[\w-]+)/$', PrizeCompanyDetailView.as_view(), name="prizecompany"),
url(r'^(?P<slug>[\w-]+)/$', 'PrizeType_Index', name="prizetype"),
url(r'^(?P<company>[\w-]+)/(?P<slug>[\w-]+)/$', 'PrizeItem_Index', name="prizepage"),
))),
# Old Redirects
)
这里的问题是评论和PrizeType。我希望我的网址结构化,以便在特定类别下寻找奖品的用户转到/ prizes / prizetype。但如果他们想在某个公司看到奖品,那么他们会去/ prizes / companyslug /。但是,这两个网址自然会发生冲突。我总是可以改变网址结构,但我不愿意。我只是想知道是否有任何解决方法,不涉及更改网址结构。
答案 0 :(得分:1)
我建议编写一个帮助器视图函数,它检查输入的URL是对应于公司还是类别,然后将请求重定向到适当的页面。
url(r'^prizes/', include(patterns('prizes.views',
url(r'^$', 'PrizeStore_Index', name="prizestore"),
url(r'^(?P<slug>[\w-]+)/$', prizehelper, name="prizehelper),
在哪里,您可以在prizehelper
内查看,如果是公司或类别,请继续查看。
另一种方法可能是,更改您的网址结构,并反映它是哪种类型的网址
url(r'^prizes/', include(patterns('prizes.views',
url(r'^$', 'PrizeStore_Index', name="prizestore"),
url(r'^company/(?P<slug>[\w-]+)/$', PrizeCompanyDetailView.as_view(), name="prizecompany"),
url(r'^category/(?P<slug>[\w-]+)/$', 'PrizeType_Index', name="prizetype"),
答案 1 :(得分:0)
有一个urlconf条目进入视图,该视图确定正在检查的类型,然后分派到该类型的相应视图。