1

DjangoのURLで正規表現に頭を悩ませようとしています。私は現在ローカルで開発しておりhttp://localhost:8000/options/items/item-string-1121/、リクエスト文字列の最後の番号部分(1121)をパラメーター'idとして渡して、'options'というアプリの'details'ビューなどにリクエストを送信できるようにしたいと考えています。 'ビュー機能に。

の詳細の署名options/views.pyは次のとおりです。デフォルトとしてid=1を使用します。

def details(request, id=1):
    ...

ルートurls.pyに次のものがあります。

...

urlpatterns += patterns('',
    url(r'^options/, include(options.urls')),
)

およびoptions/urls.py:

urlpatterns = patterns('options.views', 
    url(r'^items/(.+)(P<id>\d+)/$', 'details'),
    ...
)

上記のURLをリクエストしようとすると、開発サーバーはパターンと一致しようとしたが一致^options/ ^items/(.+)(P<id>\d+)/$しないと言います。

誰かが問題を見ることができますか?

4

2 に答える 2

3

(。+)には欲張りでない数量詞が必要なので、r'^ items /(。+?)(P \ d +)/$'。そうしないと、最初のグロブが文字列の最後まで喜んで食べてしまい、IDが一致しなくなります。

于 2012-04-28T18:07:34.093 に答える
0

引用符がありません。

urlpatterns += patterns('',
    url(r'^options/, include(options.urls')),
)

する必要があります

urlpatterns += patterns('',
    url(r'^options/', include('options.urls')),
)

私はあなたの表現がよくわかりません、これを試してみてください:

urlpatterns = patterns('options.views', 
    url(r'^items/(?<=-)(?P<id>\d+)/$', 'details'),
    ...
)
于 2012-04-28T18:29:34.077 に答える