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正規表現で使用されているのを見たことがありますが、ここのDjangotuorialでは使用されていません。

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

4

2 に答える 2

2

'^recipes/search/(?P<term>\d+)/$'おそらくあなたが必要としている/recipes/search/123456/ 間に一致します。'^recipes/search/(?P<term>[-\w]+)/$'(ハイフンで更新)

Python re docsを見て、「\ d」、「\w」などの意味を理解してください。

于 2012-05-07T19:28:37.157 に答える
1

のurlpatternは、検索語にrecipe/search数字()のみを許可します。\dに変更\wすれば、元気になるはずです。

于 2012-05-07T19:28:55.050 に答える