私は次の見解を持っています:
def tag_page(request, tag):
products = Product.objects.filter(tag=tag)
return render(request, 'shop/tag_page.html', {'products': products, 'tag': tag})
def product_page(request, slug):
product = Product.objects.get(slug=slug)
return render(request, 'shop/product_page.html', {'product': product})
次のURL構成とともに:
url(r'^(?P<tag>.+)/$', 'tag_page'),
url(r'^(?P<tag>.+)/(?P<slug>[-\w]+)/$', 'product_page'),
「tag」が含まれている正規表現を使用すると、tag_pageビューに循環的にリダイレクトしながら、URLパスを任意に増やすことができます。
これにより、次のURLを取得できます。/mens/shirts/buttonups/ここで、パスのすべてのセクション(/ mens、/ mens / shirts、/ mens / shirts / buttonups /)は、必要なtag_pageビューに直接アクセスします。
ただし、この動作をある時点で終了し、product_pageビューに移動したいと思います。これは、次の方法で実行しようとします。
url(r'^(?P<tag>.+)/(?P<slug>[-\w]+)/$', 'product_page'),
product_pageリンクをたどると:
<a href="{{ product.slug }}">{{ product }}</a>
tag_pagビューに移動します。おそらく、そのスラッグURLがタグの正規表現と一致するためです。
質問:柔軟なタグ正規表現リダイレクトの動作を維持しながら、製品ページに到達したらそれを「中断」する方法はありますか?注意すべき重要な点の1つは、商品ページを次のような構築されたURLスキーム内に維持したいということです。mens/ shirts / buttonups / shirt-product /
どんな洞察もありがたいです、ありがとう!