gpt4 book ai didi

javascript - 使用 django.contrib.messages 查看 Django 成功消息

转载 作者:行者123 更新时间:2023-11-29 23:50:23 26 4
gpt4 key购买 nike

我正在开发一个系统,该系统允许用户为注册到其帐户的 Player 对象预订事件。以前我让系统在成功时重定向到主页,但我决定尝试在预订成功时实现工具提示样式弹出。

我为此尝试了一些方法,但没有一个对我很有效。首先,我尝试在渲染命令中添加“message = 'Booking Successful.'”,以及 html 模板中的脚本。这给了我“render() 得到了一个意外的关键字参数‘message’”。

然后我尝试在我的表单之后将它添加到上下文字典中,这样呈现请求如下:

return render(request, 'tennis/make_booking.html', {'event_form': event_form, 'message': 'Booking Successful'})

这在技术上可行,但消息显示在页面加载时不太正确。

最后我尝试调用 Django 消息函数,如下面的代码所示。当我加载页面时,这段代码会弹出一个空消息框,当我单击图书按钮时,它会给我一个错误,我将提供完整的堆栈跟踪。

编辑:忽略以上所有内容,下面的代码在成功预订的页面上添加一行文本。这比我以前的要好,但如果可能的话,我希望它能弹出。

View .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 %}

如何修改此代码,以便在单击我的图书按钮时弹出一条成功消息,而不是仅向页面添加一行文本?

最佳答案

Django 带有一个内置的消息应用程序,您可以轻松地将其添加到您的项目中。

阅读 Displaying messages to users in django 上的这部分文档还有这个blog post有关在 Django 中使用显示响应消息的快速教程。

您还会收到该特定错误,因为 'book_message' 不是消息模块的属性,因此请将其从 messages.book_message 更改为 messages。成功

关于javascript - 使用 django.contrib.messages 查看 Django 成功消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42893623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com