2017-05-05 5 views
0

私は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を読み上げ、それが読み込まれていることを確認しました。問題を修正し、私の+は、最大示し始め
+4

Djangoはあなたの正規表現から何かを "変更"していません。また、コードスニペットとエラーメッセージは一致しません(2番目のケースでは、キャプチャされた部分の名前は 'myvar'ではなく 'bd'です)。 –

+0

申し訳ありませんが、それは私の質問を消毒する際のエラーでした。今修正されました。 – aninternetof

+0

Django STILLは正規表現を変更しないので、あなたの問題は他の場所にあります。あなたのurlpatternはメインのurl.pyにありますか?それは含まれていますか?古いurl.pycファイルがある可能性はありますか? (ヒント:すべての.pycファイルをプロジェクトディレクトリからクリーンアップしてください)。 urls.pyファイルの上部に「ValueErrorを上げてください(これはテストです)」というようなものを追加するとどうなりますか?クラッシュしたり、サイトがまだ機能していますか?はいの場合、あなたはrigh urls.pyファイルを編集していません;) –

答えて

0

ミッション制御urls.pyが

# -*- coding: utf-8 -*- 

にトップ

それを変更する
# -*- coding: utf-7 -*- 

でこれを持っていました。

私はutf-7を持っていますか、どのbootstrapper/cookiecutter/template/exampleか分かりません。私の悪い、人々。