2

我在我的 urls.py 中使用 slug 时遇到问题(可能是由于我对该主题缺乏了解)。

Urls.py
url(r'^admin/', include(admin.site.urls)),
url(r'^search_form/$', search_form),
url(r'^search/$', search),
url(r'^search_results/$', search_results),
#url(r'^search/search_results/acetic-acid/$', item),
url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item),

这是 html 链接 href="search_results/{{chemical.S_field}}/">{{ chemical.Barcode }} ,其中 chemical.S_field slug 字段基于项目名称的 slugified 版本。

我正在尝试创建一个页面、url 和视图,它将能够将用户带到一个模板,该模板将根据他们单击的链接而改变。

例如,如果你有毛茸茸的狗、毛茸茸的猫、毛茸茸的鸟。如果用户单击多毛猫,则该蛞蝓将是多毛猫,用户将被带到一个页面(搜索/搜索结果/多毛猫/该页面将具有从数据库中显示的多毛猫的各种信息。

我觉得这是可能的,但每次我尝试使用 slug(也许我做错了)它都会显示 ^(?P[-\w\d]+),(?P\d+)/$与存储在 slug 中的信息相反。

还有一个地方有类似的关于 django 的教程或好的信息吗?我已经浏览了网站上的 django 教程以及使用 Django 进行 Web 开发的权威指南中的 django 教程。

谢谢,

编辑 我之前可能不清楚应该选择一个更好的例子。我想显示的页面将位于 search/search_results/slug 其中 slug 将是项目名称的 slugified 版本。这是我现在通过添加最新网址得到的

Using the URLconf defined in Inventory.urls, Django tried these URL patterns, in   this order:

^admin/doc/
^admin/
^search_form/$
^search/$
^search_results/$
^(?P<slug>[-\w\d]+),(?P<id>\d+)/$
^(?P<slug>[-\w]+)/(?P<id>\d+)/$

The current URL, search/search_results/acetic-acid/, didn't match any of these.
4

2 回答 2

6

此网址格式无效。您可以在命名组中了解更多信息

url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item)

尝试

url(r'^(?P<slug>[-\w\d]+)/$', item)

因为你试图只匹配蛞蝓。

如果您希望能够匹配 slug 或 ID,您可以有 2 个单独的目标,每个目标都是一个命名 URL 模式

url(r'^(?P<id>\d+)/$', item, name='by-id')
url(r'^(?P<slug>[-\w\d]+)/$', item, name='by-slug')
于 2013-06-26T17:47:24.470 回答
0

尝试这个:

url(r'^search/search_results/(?P<slug>[-\w]+)/$', item),

您将有一个这样的 url:search/search_results/contract-acid/ 它将调用函数项。

于 2013-06-26T17:46:04.713 回答