0

所以我在同一个应用程序中有两个模型,它们具有几乎相同的 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/。但是,这两个url自然会发生冲突。我总是可以更改 url 结构,尽管我不想这样做。我只是想知道是否有任何不涉及更改 url 结构的方法。

4

2 回答 2

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 结构,并反映它是哪种类型的 url

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"),
于 2014-11-10T03:12:22.273 回答
0

有一个 urlconf 条目,该条目进入一个视图,该视图确定正在检查哪种类型,然后分派到该类型的适当视图。

于 2014-11-10T03:12:12.737 回答