我怀疑这可能与我设计正则表达式的方式有关,因为当我尝试转到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/
当前网址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中进入它:
答案 0 :(得分:2)
'^recipes/search/(?P<term>\d+)/$'
匹配/recipes/search/123456/
而'^recipes/search/(?P<term>[-\w]+)/$'
可能就是你所需要的。 (用连字符更新)
查看Python re个文档,了解'\ d','\ w'和其他人的意思。
答案 1 :(得分:1)
recipe/search
的你的urlpattern只允许搜索字词的数字(\d
)。将其更改为\w
,您应该做得很好。