我有以下看法:
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'),
带有“标签”的正则表达式允许 url 路径任意增长,同时循环重定向到 tag_page 视图。
这让我有 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 视图。大概是因为那个 slug url 匹配标签正则表达式。
所以问题是:有没有一种方法可以保持灵活的标签正则表达式重定向行为,但一旦我到达产品页面就“中断”它?需要注意的一件重要事情是,我想将产品页面保留在构建的 url 方案中,例如:mens/shirts/buttonups/shirt-product/
任何见解表示赞赏,谢谢!