【发布时间】:2020-02-01 00:19:19
【问题描述】:
我使用 django 创建了一个 web 应用程序,在其中一个部分中我要求用户提供反馈,并在单击提交按钮时向用户发送一封电子邮件,感谢他的反馈。
但是每次我点击提交时,页面都会自动刷新,电子邮件会成功发送但是我想要的是当用户点击提交时,我想在此处显示“谢谢”消息来代替反馈形式。和反馈表被删除
这是我index.html的一部分
<form action="" method="POST">
{% csrf_token %}
<div>{{ form.message }}</div>
<div>{{ form.email }}</div>
<p class="formerrors" >{{ form.email.errors.as_text }}</p>
<hr>
<input id="submitbutton" type="submit" name="submit" value="Submit">
</form>
这是我的看法 def 索引(请求):
if request.method == 'POST':
form = FeedbackForm(request.POST)
if form.is_valid():
subject = "You got a message"
message = form.cleaned_data['message']
email = form.cleaned_data['email']
actual_message = "You got a message from {} \n\n {} \n\nGo to work\nWith regards".format(email,message)
recipients = ['example@mail.com']
sender = 'example@mail.com'
send_mail(subject, actual_message, sender ,recipients,fail_silently=False)
return HttpResponseRedirect('')
else:
form = FeedbackForm()
return render(request,'my_webapp/index.html',{'form':form})
我可以通过编写一个 JS onClick 函数来做到这一点,但有没有更好的方法来做到这一点?此外,内置的 django 消息刷新了我猜的页面,并且始终位于页面顶部。 我当然不希望我的页面被刷新并且希望消息出现在表单的位置。
【问题讨论】:
-
如果您不想刷新页面,则需要使用 Ajax,如果成功,您可以将表单替换为感谢信息。
标签: django django-forms django-templates django-views