2012-11-09 9 views
37

Was ist es besser allgemein zu verwenden?Was ist der Unterschied zwischen der Verwendung von Django Redirect und HttpResponseRedirect?

Gibt es irgendeinen Vorteil zu schreiben:

return redirect(my_url) 

über:

return HttpResponseRedirect(my_url) 

Oder ist es ein direkter Alias? Gibt es einen Unterschied? Was ist mehr Python/Django-Nic?

Antwort

46

Es gibt einen Unterschied zwischen den beiden:

Im Falle von HttpResponseRedirect das erste Argument nur ein url sein kann.

redirect die wird schließlich eine HttpResponseRedirect Rückkehr, eine model annehmen kann view oder url wie es "zu" Argument ist. Es ist also etwas flexibler in was es "umleiten" kann.

Ich mag auch, wie redirect ist kürzer. Also würde ich redirect über HttpResponseRedirect verwenden.

Beide sind in Ordnung, aber zu verwenden.

6

Von Dokumentation -

redirect(to[, permanent=False], *args, **kwargs) Gibt ein HttpResponseRedirect an die entsprechende URL für die Argumente übergeben.

aus der Definition ist das gleiche. Dafür gibt es Abkürzungen. Beide sind ein und dasselbe.

Verknüpfungen werden im Allgemeinen eine Ebene über den tatsächlichen APIs geschrieben. So verkapselt redirectHttpResponseRedirect und HttpResponsePermanentRedirect mit dem arg permanent=False.

Es gibt keine größeren Nachteile bei der Verwendung von HttpResponseRedirect über redirect. Hoffe das klärt es.

Verwandte Themen