2016-11-11 3 views
2

Ich lese die Dokumentation darüber, wie eine Nachricht an den Benutzer mit Django Nachrichten angezeigt werden. Er sagt, dass zu rufen, um eine Nachricht in Ihren Ansichten hinzuzufügen:Wie schreibe ich eine Django-Nachricht in Ihre Ansichten Code

from django.contrib import messages 
messages.add_message(request, messages.INFO, 'Hello world.') 

Ich bin nicht sicher, wo die zweite die zweite Zeile zu setzen, das ist meine Ansicht:

def sign_up(request): 

    if request.method == "POST": 
     form = IdForm(request.POST) 
     if form.is_valid(): 
      post = form.save() 
      post.save() 
      ID = post.id_text 
      return HttpResponse('Thank you') 
     else: 
      return HttpResponse('That text is invalid') 
    else: 
     form = IdForm() 
    return render(request, 'checkin/base.html', {'form': form}) 

Ich mag die Nachricht zu erscheinen und danken dem Benutzer für die Anmeldung und ihre Eingabe als auch.

Antwort

2

Lager, daran, dass es zu einem Erfolg URL auf gültige Form Vorlage umleiten üblich ist, Ihr Code sollte wie folgt aussehen:

def sign_up(request): 

    if request.method == "POST": 
     form = IdForm(request.POST) 
     if form.is_valid(): 
      post = form.save() 
      post.save() 
      ID = post.id_text 
      messages.add_message(request, messages.INFO, 'Hello world.') 
      return HttpResponseRedirect('/thank-you-page/') 

    else: 
     form = IdForm() 
    return render(request, 'checkin/base.html', {'form': form}) 

beachten Sie, dass diese Ergebnisse auch in dem Benutzer gesagt, warum genau sein Das Formular ist ungültig (vorausgesetzt, Sie haben die Template-Eigenschaft eingerichtet). Es ist immer gut zu sagen, was das Problem ist, anstatt zu sagen, dass es ein Problem gibt.

+0

Wann soll die Nachricht erscheinen? Wenn Sie auf der Seite ankommen, auf die Sie weitergeleitet wurden? Denn wenn ich den Pfad zu 'HttpResponseRedirect 'übergebe, erhalte ich den Fehler 404. Meine App URL ist 'localhost: 8000/checkin /' mit der Ansicht befindet sich bei 'localhost: 8000/checkin/sign_up' aber wenn ich versuche, das Argument '/ sign_in /' zu geben (lassen Sie uns einfach sagen, ich leite sie auf die Seite um wo du dich anmeldest) zu 'HttpResponseRedirect' es wird mich nicht zu' localhost: 8000/checkin/sign_in' umgeleitet, sondern stattdessen zu 'localhost: 8000/sign_up'. – Amon

+1

'/ thank-you-page /' war nur ein Beispiel, bitte wählen Sie die am besten geeignete Seite auf Ihrer Website. Es ist sinnlos, den Benutzer erneut auf die Anmeldeseite umzuleiten. Normalerweise haben die meisten Websites ein Dashboard oder einen Home-Bildschirm, auf den der Benutzer nach dem Login geschickt wird. – e4c5

+0

Aber würde das das Problem beheben, wohin es umleitet? Ich schreibe eine andere Ansicht und schaue zurück – Amon

Verwandte Themen