【发布时间】:2014-01-30 09:41:42
【问题描述】:
我有两个基于类的视图,比如说“类别”和“产品”。
我尝试实现的目标其实很简单。
“类别”包含一个网址(比如说“食物”),这意味着当我点击这样的网址时:
mydjango.com/myapp/food/
它实际上在数据库中搜索是否有任何具有与“食物”匹配的 URL 的“类别”对象。
url 模式是这样的:url(r'^(?P<rel_url>.+)/$', login_required(is_allowed(Category.as_view())), name='category')
现在假设我想访问一个产品(来自“产品”模型),该产品包含在类别匹配“食物”中作为 url。例如:mydjango.com/myapp/food/rice
Product 模型中的 url 字段如下所示,然后是“food/rice”
然后我的 url 模式看起来与上面的完全一样,除了视图的名称。
问题是,django 只检查第一个 url 并告诉我没有包含 'food/rice' url 的 Category 对象。这是有道理的,因为该 url 存储在 Product 模型中。
更简单的问题:如何根据匹配的模式访问两个不同的视图?
mydjango.com/myapp/food 必须使用类别视图(使用 rel_url)mydjango.com/myapp/food/rice 不匹配任何类别,然后它使用产品视图。
顺便说一句,我知道这不是好方法,但这是我找到的唯一解决方案(应用程序远比类别/产品复杂得多)
【问题讨论】: