【发布时间】:2015-02-26 17:22:06
【问题描述】:
欢迎,
我在尝试进行深度嵌套时遇到了问题。 问题是我有菜单,它有可以有多个类别的子菜单,这些类别可以有多个可用的服务,这些服务可以有多个产品。 为该特定事物编写 url 很容易,但是当我尝试创建一个没有类别的产品并且我希望它直接在 SUBMENU 中显示时,问题在于为该特定产品编写不与 SUBMENU slug 重叠的 url。
例如:
MENU > SUBMENU1 > CATEGORY 1 > AVAILABLE SERVICES > PRODUCT 1
MENU > SUBMENU2
MENU > SUBMENU3 > PRODUCT 2
所有这些名称都是 slugged,我的 urls.py 看起来像这样:
url(r'^uslugi/(?P<category_slug>\S+)/(?P<services_slug>\S+)/(?P<service>\S+)/$', views.show_service_details, name='show_service_details'),
url(r'^uslugi/(?P<category_slug>\S+)/(?P<services_slug>\S+)/$', views.show_services, name='show_services'),
url(r'^uslugi/(?P<category_slug>\S+)/$', views.show_categories, name='show_categories'),
url(r'^uslugi/(?P<product_slug>\S+)/$', views.show_product_without_cat, name='show_product_without_cat'),
问题是,当我尝试输入没有类别的产品(只是放在子菜单中)时,我的网址正在调用 show_category 视图。更改这些 url 的顺序不会解决我的问题,因为我将无法输入我的 show_categories,因为 django 将尝试执行 show_product_without_cat
在不重新设计所有结构的情况下,我有一个合理的解决方案吗?
不幸的是,即使在模板中对 django 说调用特定的 VIEW 也无济于事。它只是遍历所有 url 并匹配第一个
<a href="{% url 'show_product_without_cat' i.url %}" >
<img src="/media/{{ i.image }}"> <br/>
</a>
【问题讨论】: