我正在研究一個系統,該系統允許用戶針對註冊到其帳戶的Player對象的事件進行預訂。以前,我在成功時將系統重定向到主頁,但我決定試着在預訂成功時彈出一個工具提示樣式。Django Success使用django.contrib.messages發送消息
我已經嘗試了幾件事情,沒有人爲我工作。首先,我嘗試在我的渲染命令中添加「message ='Booking Successful。'」,以及html模板中的腳本。這給了我「render()有一個意想不到的關鍵字參數'message'」。
然後我試圖把它添加到語境詞典我的表格後,使得呈現請求寫着:
return render(request, 'tennis/make_booking.html', {'event_form': event_form, 'message': 'Booking Successful'})
這種技術上的作品,但顯示在頁面加載這是不完全正確的消息。
然後最後我試着調用Django消息函數,如下面的代碼所示。這個代碼彈出一個空的消息框,當我加載頁面,當我點擊書本按鈕,它給了我一個錯誤,我會提供完整的堆棧跟蹤。
編輯:忽略以上所有代碼,下面的代碼在成功預訂時在頁面上添加了一行文本。這比我的要好,但如果可能的話,我希望它能彈出來。
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模板:
{% 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 %}
如何修改這個代碼,這樣我得到一個成功的消息彈出,當我點擊我的書按鈕,而不是隻是一個線文本添加到頁面?
的變化而變化'messages.book_message'到'messages.success' ' –