2013-02-21 9 views
8

Ho una vista che esegue la determinata attività e ritorna a un'altra vista che esegue il rendering di template hello.html.Come passare un messaggio da HttpResponseRedirect in Django?

def 1stview(request): 
    #Do this 
    #Do that 
    return HttpResponseRedirect('/success/') 

def success(request): 
    return render_to_response('overview.html', {'overview_files': b, 'total_files':total_files, 'total_size':total_size, 'username': username}, context_instance=RequestContext(request)) 

Dopo aver completato con successo prima vista voglio passare il messaggio 'successo' in overview.html. Ci sono molti reindirizzamenti alla vista success. Voglio trasferire il messaggio solo quando si passa attraverso la prima vista. Come lo posso fare?

+1

È possibile aggiungere dei parametri GET per reindirizzare, in questo modo 'tornare HttpResponseRedirect ('/ successo /? status = successo ') '. E nella funzione di successo, puoi ottenere quel parametro: 'request.GET.get ('status', None)' – stalk

risposta

1
from django.contrib import messages 
messages.success(request, _('Thank you')) 
return redirect('/whatever/') 
0

Fare attenzione quando si utilizza i18n gli URL! Se si utilizza un collegamento come /whatever/ ma si utilizza l'internazionalizzazione, verrà reindirizzato a /en/whatever/, perdendo così il messaggio nella richiesta. Se si utilizza l'internazionalizzazione, passare sempre la lingua all'URL:

from django.contrib import messages 
from django.utils.translation import get_language 

messages.success(request, _('Thank you')) 
return redirect('/%s/whatever/' % get_language()) 

Costo me un paio di ore per capire questo ...

Problemi correlati