0

したがって、同じアプリに、ほとんど同じ URL 構造を持つ 2 つのモデルがあります。

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
)

問題は Reviews と PrizeType です。特定のカテゴリの賞品を探しているユーザーが /prizes/prizetype にアクセスできるように URL を構成したいと考えています。しかし、特定の会社の賞品を見たい場合は、/prizes/companyslug/ にアクセスします。ただし、これら 2 つの 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 に答える