如何在用户单击Django中的“ok”后触发Javascript警报并重定向页面?

2024-07-06 18:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django网站上有联系表格。当有人单击submit时,我想使用一个Javascript警报来通知他们他们的消息已经发送,然后将他们重定向回主页。在我的视图中,我已经设置了HttpResponseRedirect部分,但是我正在努力让JS部分工作。这是我的视图.py公司名称:

from datetime import date
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext
from django.shortcuts import render_to_response
from .form import ContactUsForm

def contact(request):
    form = ContactUsForm(request.POST or None)
    if form.is_valid():
        this_form = form.save(commit=False)
        this_form.save()
        return HttpResponseRedirect('/')

    return render_to_response('contact/form.html', locals(), context_instance=RequestContext(request))

Tags: todjangofromimportform视图responserequest
1条回答
网友
1楼 · 发布于 2024-07-06 18:21:13

在模板中,您可以使用如下简单的方法(使用一些jQuery):

$(function()
{
    $('form').on('submit', function(){
        alert('Your message has been sent!');
    });
});

注意以下几点:

  1. 这有点误导,因为它会提醒用户他们的消息已经被发送,甚至 如果它实际上没有被发送(它从不检查服务器以确保)。因此,如果表单中有错误,这肯定会误导用户。

  2. 此警报将绑定到页面上的任何表单,因此最好使用其id针对特定表单。

所以这就是快速而肮脏的解决方案。不过,我建议改用Django的messages framework。基本上,您不会使用任何Javascript来提交表单,而是在视图中添加如下内容:

^{pr2}$

然后在模板中(最好将其添加到基本模板中,这样用户无论走到哪里,它都会显示出来,因为每次页面加载后邮件都会过期:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

相关问题 更多 >