Ich dachte, ich hätte dies herausgefunden, aber gerade etwas seltsam entdeckt.Django, umleiten Benutzer für nicht erkannte URL (nicht nur 404 Vorlage)
In urls Ich habe
url('^page_1/$', handle_page_1),
url('^page_2/$', handle_page_2),
url('^.*/$', handle_page_not_found),
handle_page_not_found()
die Benutzer entsprechend umleiten, wenn die URL nicht erkannt.
Das funktioniert gut, aber ich entdeckte etwas seltsam.
Wenn eine Funktion gibt
return HttpResponse("ok")
dann „ok“ zurückgegeben und alles scheint gut zu funktionieren. ABER, ich habe gerade gesehen, dass handle_page_not_found()
auch aufgerufen wird (ich habe mit einer print-Anweisung getestet). Es ist immer noch "ok", das zurückgegeben wird, aber zuerst wird der Code in handle_page_not_found()
ausgeführt.
Also, wie kann ich eine Funktion haben, die für nicht erkannte URLs aufgerufen wird, aber die nicht von einem HttpResponse
Objekt aufgerufen wird?
EDIT: Basierend auf Antwort, sah, dass mein Code ist in Ordnung, außer in speziellen Testsituation. Es ist alles gut, solange die HttpResponse zu einem Ajax-Aufruf zurückgegeben wird (das ist, wenn ich es normalerweise verwende).
Sie haben Recht! request.path ist /favicon.ico/ Das hat mich dazu gebracht zu schauen und zu sehen, dass ich das Problem nicht habe, wenn ich eine HttpResponse zu einem Ajax-Aufruf zurückschicke. Und das ist tatsächlich das einzige Mal, dass ich das tue, abgesehen von der Testseite, die ich gerade gesehen habe. – user984003
Kurze Version: alles ist gut. Mein Code funktioniert außer in speziellen Testsituationen. – user984003
für mich glaube ich, dass es aufgrund des Ausdrucks in der letzten URL ist. Für jede beliebige Zeichenfolge wird handle_page_not_found aufgerufen, ändern Sie den Stern in etwas anderes. – drabo2005