【发布时间】:2014-03-21 13:44:34
【问题描述】:
我在 Django 中有一个菜单内容系统,其中菜单项通过其键访问,其内容通过 ID 访问。我的 URL 映射是:
url(r'^menu/(?P<item_key>[a-z/\-]*[a-z])/', views.menu, name='menu'),
url(r'^menu/(?P<item_key>[a-z/\-]*[a-z])/(?P<content_id>\d+)/', views.menu,\
name='menu_showById'),
第一个是基本视图,用户在通过导航栏单击项目后会到达该视图。第二个是用于查看菜单项中的特定内容。 views.menu 有一个名为 content_id 的可选参数,默认为 None(在这种情况下,它会查看最新内容)。
导航栏链接工作正常,指向菜单项http://localhost:8000/menu/some-item/sub-item。在使用{% url 'data:menu' node.key %}[1] 在模板中生成的此 URL 中,/menu/ 是视图,some-item/sub-item 是 item_key(示例匹配实际用例;几乎中有破折号和正斜杠所有项目键)。
通过基本视图,我单击使用{% url 'data:menu_showById' menuItem.key cItem.id %} 作为http://localhost:8000/menu/some-item/sub-item/2/ 生成的链接,以查看 ID 为 2 的内容。生成的 URL 没有任何问题,它们看起来完全符合我的要求,并且URL 映射正则表达式正确匹配它们。
问题是,虽然menu_showById 正确获取item_key 参数为some-item/sub-item,但第二个参数content_id 从未被捕获。
...为什么?
^[1]:node 是 django-mptt 树结构中的一个节点,用于保存我的菜单项。
【问题讨论】:
标签: django django-views django-urls