5

私はこれを理解したと思っていましたが、奇妙なことを発見しました。

私が持っているURLで

url('^page_1/$', handle_page_1),
url('^page_2/$', handle_page_2), 
url('^.*/$', handle_page_not_found),

handle_page_not_found()URL が認識されない場合、ユーザーを適切にリダイレクトします。

それはうまくいきますが、奇妙なことを発見しました。

関数が返される場合

return HttpResponse("ok")

その後、「ok」が返され、すべて正常に動作しているように見えます。しかし、それhandle_page_not_found()が呼び出されていることもわかりました(printステートメントでテストしました)。返されるのはまだ「OK」ですが、最初に のコードを実行していますhandle_page_not_found()

では、認識されていない URL に対して呼び出されるが、HttpResponseオブジェクトによって呼び出されない関数を作成するにはどうすればよいでしょうか?

編集:答えに基づいて、特別なテスト状況を除いて、私のコードは実際には問題ないことがわかりました。HttpResponse が ajax 呼び出しに返される限り、それはすべて問題ありません (これは私が通常使用する場合です)。

4

4 に答える 4

0

私のアプリでは、Django v1.11.3 と python v3.6 で動作します。

ステップ 1. 次のように、view_404 を views.py に追加します。

def view_404(request):
    # do something
    return redirect('/')

ステップ 2. urls.py にハンドラーを追加します。

url(r'^.*/$', views.view_404)
于 2017-12-07T02:03:07.413 に答える