私はDjangoで次のURLを作成しました。私の目標は、任意の長さの整数をbd
としてマッチさせてキャプチャすることです。DjangoのURL正規表現で `+`が消える
url(r'^mission-control/', include('mission_control.urls', namespace='mission-control'))
私はhttp://localhost/mission-control/load/5(一桁数の整数)に行き、私はに取られています:
urlpatterns = [
url(r'^load/(?P<bd>[0-9]+)/$', views.home, name='home_with_load')
]
このurls.pyは、このような名前空間を持つメインurls.pyに含まれています期待される見方。しかし、私は、URL http://localhost/mission-control/load/54(2桁の整数)に行くとき、私は私がこのパターンに一致するように失敗したことを示してDjangoのエラーデバッグページ、にもたらしています:そのはず+
こと
^mission-control/ ^load/(?P<bd>[0-9])/$ [name='home_with_load']
注意その後、[0-9]
が消えています。 2桁の整数が一致しない理由を説明します。
なぜ+
が消えましたか?正規表現のコンパイル中に削除する意味がない+
を私の正規表現にいくつかのエラーがありますか?
デバッグノート:
\d+
を使用しているとき、私は同じ結果を得ます。ちょうど\d
に変わります。- 私はurl regexが確実に再コンパイルされるように、djangoを強制終了して再起動しました。意味のない変更(
bd
という名前の変更など)を行って、エラーデバッグページに表示されることを確認しました。 - 私は、ミッションコントロールurl.pyの中で一時的に
ValueError
を読み上げ、それが読み込まれていることを確認しました。問題を修正し、私の+
は、最大示し始め
Djangoはあなたの正規表現から何かを "変更"していません。また、コードスニペットとエラーメッセージは一致しません(2番目のケースでは、キャプチャされた部分の名前は 'myvar'ではなく 'bd'です)。 –
申し訳ありませんが、それは私の質問を消毒する際のエラーでした。今修正されました。 – aninternetof
Django STILLは正規表現を変更しないので、あなたの問題は他の場所にあります。あなたのurlpatternはメインのurl.pyにありますか?それは含まれていますか?古いurl.pycファイルがある可能性はありますか? (ヒント:すべての.pycファイルをプロジェクトディレクトリからクリーンアップしてください)。 urls.pyファイルの上部に「ValueErrorを上げてください(これはテストです)」というようなものを追加するとどうなりますか?クラッシュしたり、サイトがまだ機能していますか?はいの場合、あなたはrigh urls.pyファイルを編集していません;) –