0

我怀疑这可能与我设置正则表达式的样式有关,因为当我尝试访问时会得到以下输出:例如,http: //127.0.0.1 :8000/recipes/search/fish/。 ..

使用 gfp.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:

^recipes/$
^recipes/category/(?P<category>\d+)/$
^recipes/search/(?P<term>\d+)/$
^recipes/view/(?P<slug>\d+)/$
^admin/

当前 URL,recipes/search/fish/,与其中任何一个都不匹配。

这里是我的 URLconf 供参考

urlpatterns = patterns('',
url(r'^recipes/', 'main.views.recipes_all'),
url(r'^recipes/category/(?P<category>\d+)/$', 'main.views.recipes_category'),
url(r'^recipes/search/(?P<term>\d+)/$', 'main.views.recipes_search'),  
url(r'^recipes/view/(?P<slug>\d+)/$', 'main.views.recipes_view'),

以下是我目前尝试使用的视图供参考

def recipes_all(request):
    return HttpResponse("this is all the recipes")

def recipes_category(request, category):
    return HttpResponse("this is the recipes category % s" % (category))

def recipes_search(request, term):
    return HttpResponse("you are searching % s in the recipes" % (term))

def recipes_view(request, slug):
    return HttpResponse("you are viewing the recipe % s" % (slug))

我怀疑这是我的正则表达式,有人能解释一下它有什么问题吗?我已经看到 /w(?) 在某些 url 正则表达式中使用,但它并没有在 Django tuorial 中使用:

https://docs.djangoproject.com/en/1.4/intro/tutorial03/

4

2 回答 2

2

'^recipes/search/(?P<term>\d+)/$'匹配/recipes/search/123456/ while'^recipes/search/(?P<term>[-\w]+)/$'可能是您需要的。(用连字符更新)

查看Python re docs 以了解 '\d'、'\w' 和其他内容的含义。

于 2012-05-07T19:28:37.157 回答
1

您的 urlpattern forrecipe/search仅允许\d搜索词使用数字 ( )。将其更改为\w,您应该会很好。

于 2012-05-07T19:28:55.050 回答