【发布时间】:2012-08-21 12:54:18
【问题描述】:
我有以下看法:
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(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/
感谢任何见解,谢谢!
【问题讨论】:
标签: regex django django-views urlconf