Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La gestione degli URL

Gestire gli indirizzi e generare messaggi HTTP
Gestire gli indirizzi e generare messaggi HTTP
Link copiato negli appunti

L'ordine con cui definiamo le espressioni regolari nel file urls.py è molto importante, in quanto il server invoca il modulo Python della prima espressione regolare soddisfatta dalla richiesta.

Esaminiamo questa dichiarazione:

urlpatterns = patterns('', 
    (r'^app/', 'miosito.app.views.index'),
    (r'^app/form/', 'miosito.app.views.form'),
)

La richiesta app/form/ soddisfa l'espressione regolare ^app/, quindi sarà invocato sempre il modulo miosito.app.views.index, nonostante l'espressione regolare successiva sia più simile alla richiesta che il server ha ricevuto. Per ottenere l'accesso alla View form dobbiamo quindi invertire l'ordine delle definizioni.

urlpatterns = patterns('',
    (r'^app/form/', 'miosito.app.views.form'),
    (r'^app/', 'miosito.app.views.index'),
)

Messaggi HTTP

Vediamo ora come impostare una View che restituisca messaggi HTTP. Possiamo utilizzare delle sottoclassi di HttpResponse:

  • HttpResponseNotFound, per restituire la pagina Page Not Found (404)
  • HttpResponseForbidden, per restituire la pagina Forbidden (403)
  • HttpResponseServerError, per restituire la pagina Server Error (500)

facendo restituire alla view un'istanza di tali classi invece di HttpResponse. Vediamo subito un esempio pratico per capire come si utilizzano.

	def vista(request):
		#...
		errore = ...
		if errore:
			return HttpResponseNotFound('<h1>Pagina non trovata </h1>')
		else:
		# ...

Notiamo che anche le sottoclassi di HttpResponse necessitano del codice HTML da restituire; per comodità Django prevede un altro metodo per gestire l'errore HTTP 404: se in qualsiasi punto del codice si lancia un'eccezione Http404 (raise Http404), Django la cattura e restituisce la pagina Page Not Found standard.

Ti consigliamo anche