Django 通过 URL conf 传递多个单词

Django pass multiple words through a URL conf

使用 django,我想通过我的 URL conf 中的一个变量来命名我的项目。假设我的产品名称是 "stack overflow" 我希望能够访问:

http://127.0.0.1:8000/product/stack+overflow/

但我得到的是 "page not found" 404 页面。当名称只是单词时它确实有效,但不是多个单词。

我的urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^product/(?P<name>\w+)/$', 'crunch.views.product_by_name', name='preview_by_name'),
)

您需要扩展正则表达式以匹配您希望在 url 中允许的其他字符。

在您允许字母数字字符和 + 的情况下,这应该有效:

urlpatterns = patterns('',
    url(r'^product/(?P<name>[\w\+]+)/$', 'crunch.views.product_by_name', name='preview_by_name'),
)