2013-02-21 10 views
8

Mam widok, który wykonuje określone zadanie i powraca do innego widoku, który renderuje szablon hello.html.Jak przekazać wiadomość z HttpResponseRedirect w 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)) 

Po pomyślnym ukończeniu 1. widok Chcę przekazać komunikat „Udane” w overview.html. Istnieje wiele przekierowań do widoku success. Chcę przesłać wiadomość tylko po przejściu pierwszego widoku. Jak mogę to zrobić?

+1

Możesz dodać parametr GET przekierować, podobnie jak 'powrócić HttpResponseRedirect ('/ success /? status = udany ")'. W funkcji success możesz uzyskać ten parametr: 'request.GET.get ('status', None)' – stalk

Odpowiedz

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

Bądź ostrożny używając i18n adresów URL! Jeśli użyjesz linku takiego jak /whatever/, ale użyjesz internacjonalizacji, przekieruje to do /en/whatever/, tracąc w ten sposób wiadomość w żądaniu. Jeśli używasz internacjonalizacji, zawsze przechodzą języka do URL:

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

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

Koszt mi kilka godzin, aby to zrozumieć ...

Powiązane problemy