2012-11-09 8 views
37

Qual è il migliore utilizzo generale?Qual è la differenza tra l'uso del reindirizzamento Django e HttpResponseRedirect?

C'è qualche vantaggio alla scrittura:

return redirect(my_url) 

sopra:

return HttpResponseRedirect(my_url) 

Oppure è un alias diretto? C'è qualche differenza? Qual è più pythonic/django-nic?

risposta

46

V'è una differenza tra i due:

Nel caso HttpResponseRedirect primo argomento può essere solo una url.

redirect che sarà in ultima analisi, restituire un HttpResponseRedirect può accettare un model, view, o url come è "per" l'argomento. Quindi è un po 'più flessibile in ciò che può "reindirizzare" a.

Mi piace anche come redirect è più breve. Quindi userei redirect su HttpResponseRedirect.

Entrambi vanno bene però.

6

Da documentazione -

redirect(to[, permanent=False], *args, **kwargs) Restituisce un HttpResponseRedirect all'URL appropriato per gli argomenti passati.

dalla definizione è lo stesso. Ecco a cosa servono le scorciatoie. Entrambi sono la stessa cosa.

Le scorciatoie in genere sono scritte un livello sopra le API effettive. Quindi redirect incapsula HttpResponseRedirect e HttpResponsePermanentRedirect con l'arg permanent=False.

Non c'è uno svantaggio principale nell'uso di HttpResponseRedirect su redirect. Spero che questo lo cancelli.

Problemi correlati