Ich arbeite an einem System, das es einem Benutzer ermöglicht, eine Buchung für ein Ereignis für ein Player-Objekt zu platzieren, das für sein Konto registriert ist. Zuvor hatte ich das System zum Erfolg auf die Startseite umleiten, aber ich entschied mich zu versuchen, ein Tooltip Stil Pop-up zu implementieren, wenn die Buchung erfolgreich war.Django Success Nachricht in Sicht mit django.contrib.messages
Ich habe ein paar Dinge ausprobiert und keiner hat für mich funktioniert. Zuerst versuchte ich, "message = 'Booking Successful.'" In meinem Render-Befehl zusammen mit einem Skript in der HTML-Vorlage hinzuzufügen. Dies gab mir "render() hat eine unerwartete Keyword-Argument 'Nachricht'".
Dann versuchte ich hinzugefügt, um es auf den Kontext-Wörterbuch nach meiner Form, so dass der Antrag machen lautet:
return render(request, 'tennis/make_booking.html', {'event_form': event_form, 'message': 'Booking Successful'})
Diese technisch funktioniert, aber die Nachricht auf dem Laden der Seite angezeigt wird, die nicht ganz richtig ist.
Dann versuchte ich schließlich einen Anruf an die Django-Nachrichtenfunktion, wie in meinem unteren Code gezeigt. Dieser Code öffnet ein leeres Meldungsfeld, wenn ich die Seite lade, und wenn ich auf die Schaltfläche "Buch" klicke, erscheint ein Fehler, den ich mit der vollständigen Stack-Trace angeben kann.
EDIT: Ignoriere alle oben, Code unten fügt eine Zeile Text auf die Seite bei erfolgreicher Buchung. Das ist besser als ich, aber ich würde es gerne ein Pop-up, wenn möglich.
views.py
@login_required
def make_booking(request):
form = EventForm()
if request.method == 'POST':
event_form = EventForm(request.POST)
print "HELLO"
if event_form.is_valid():
print "VALID"
event = event_form.save(commit=False)
player = request.user.player_set.all()[0]
event.player = player
event.save()
# Consider rendering a different page
messages.success(request, 'Your booking was successful!', extra_tags='alert')
else:
# invalid form, print problems to terminal
print(event_form.errors)
else:
# not POST so render blank forms
event_form = EventForm()
return render(request, 'tennis/make_booking.html', {'event_form': event_form})
HTML-Vorlage:
{% extends 'tennis/base.html' %}
{% block body_block%}
{% block title_block %}
Make a Booking
{% endblock %}
<body>
<h1> Book an Event </h1>
If booking is sucessful you will be redirected to the home page
<br>
<div>
<form id="event_form" method="post" action="/tennis/make_booking/">
{% csrf_token %}
{% for hidden in event_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in event_form.visible_fields %}
{{field.errors}}
{% endfor %}
<p>{{ event_form.event.label_tag }} {{ event_form.event }}</p>
<input type="submit" name="book" value="Book"/>
</form>
</div>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li class="{{ message.tags }}">{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
</body>
{% endblock %}
Wie kann ich diesen Code ändern, dass ich eine Erfolgsmeldung erhalten Aufspringen, wenn ich statt nur einer Linie mein Buch Schaltfläche klicken der Text auf der Seite hinzugefügt?
Änderung '' messages.book_message' messages.success' ' –