urls.pyの正規表現に問題がありました(私はdjangoの初心者であり、一般的な正規表現でもあります)
これが私の元のurls.pyです
url(r'^name/(?P<name>\w+)/$', 'course.views.name'),
url(r'^', 'course.views.index'),
そして、私はこれを使用してそれにアクセスしようとしていました:
http://127.0.0.1:8000/name/blah/
私の見解は次のようになります。
def index(request):
return HttpResponse("Hello, sam. You're at the course index.")
def name(request, name):
return HttpResponse("Hello, %s. You're at the course index." % name)
私が得た結果は、私がどんな入力をしたとしても、「名前」関数ではなく「インデックス」関数を定期的に取得するということでした。問題は最初の正規表現にあると思いました。
しかし、その後、2番目のものを次のように変更しました。
url(r'^$', 'course.views.index'),
そして、これは私がそれが機能すると思ったのと同じように機能します!
「$」は行の終わりを意味することを理解していますが、最初の正規表現を最初に評価するべきではありませんか?これらの式が一致する順序は何ですか?
すべてのURLに「$」を追加することはそれほど大きな問題ではありませんが、なぜそこに配置するのかを理解したいと思います。
Django1.4とPython2.7を使用しています