正規表現のPythonドキュメントには、「。」の説明があります。します:
(ドット)デフォルトモードでは、これは改行を除くすべての文字に一致します。DOTALLフラグが指定されている場合、これは改行を含むすべての文字に一致します。
Djangoで行うプロジェクトの場合、次の正規表現を設定します。
url(r'^accounts/confirm/(.+)$', confirm,name='confirmation_view')
私が理解している限り、これは「accounts / confirm /」で始まり、その後に任意の数の任意の文字が続くすべてのURLと一致する必要があります。これらの任意の文字は、パラメータとして関数「確認」に渡されます。ここまでは順調ですね。
したがって、この正規表現は一致する必要があります
accounts/confirm/fb75c6529af9246e4e048d8a4298882909dc03ee0/
同様に
accounts/confirm/fb75c6529af9246e4e-048d8a4298882909dc03ee0/
と
accounts/confirm/fb75c6529af9246e4e=048d8a4298882909dc03ee0/
と
accounts/confirm/fb75c6529af9246e4e%20048d8a4298882909dc03ee0/
少なくとも、それは私がそれがするだろうと思ったことでした。しかし、そうではなく、最初のものだけに一致します。Djangoは他のものに404を返し続けます。式の(。+)部分は、「改行以外の任意の文字の1つ以上の鉱石に一致する」ことを意味する必要があるため、私にはわかりません。
編集: コメントと回答が証明されたように、私は正規表現を正しく理解しました。だから、これは今の質問です:なぜDjangoは正しいビューを返さないのですか?しかし404です。それはその正規表現に渡す前にURLに何かをしているのですか?