在urls.py中遇到让slug正常工作的问题

时间:2013-06-26 17:38:50

标签: django url hyperlink slug

我在urls.py中使用slugs时遇到了一个问题(可能是由于我对这个问题缺乏了解)。

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}} /”&gt; {{chemical.Barcode}} 其中chemical.S_field slug字段基于项目名称的细分版本。

我正在尝试创建一个页面,网址和视图,以便用户能够根据他们点击的链接更改模板。

例如,如果你有毛狗,毛猫,蓬松的鸟。如果用户点击毛茸茸的猫,它将成为毛茸茸的猫,并且用户将被带到一个页面(搜索/ search_results /毛茸茸猫/它将拥有将从数据库中显示的毛猫的各种信息。< / p>

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

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

谢谢,

修改 我可能还不清楚应该选择一个更好的例子。 我想要显示的页面位于search / search_results / slug slu will将是该物品名称的slugized版本。 这是我现在通过添加最新网址

获得的内容
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.

2 个答案:

答案 0 :(得分:6)

此网址格式无效。您可以在Named Groups

中详细了解相关信息
url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item)

尝试

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

因为你试图只匹配slu ..

如果您希望能够匹配slug或ID,则可以有2个单独的目标,每个目标都是Named URL Pattern

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

答案 1 :(得分:0)

试试这个:

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

你将有一个这样的网址:search / search_results / acetic-acid /将调用该功能项。