javascript - 呈现相同的视图并防止表单重新提交确认
问题描述
我有一个带有表单的简单索引页面,可以从人们那里获得一些反馈,提交此表单后,我的视图只会加载相同的页面。这会在 Chrome 浏览器中出现“重新提交表单”确认(可能也在其他浏览器中)。我不想创建带有确认的第二页,我在提交表单后只在页面顶部使用小警报进行确认。
那我能解决这个问题吗?直到我看到的大多数答案都说必须有重定向功能,但在我的情况下,重定向不需要上下文我需要上下文来知道表单已提交并显示警报以通知用户。我的观点:
def index(request):
if request.POST:
showAlert = True
# Collect form data
name = request.POST.get('name')
to_email = 'example@email.com'
message = 'message: {}\nname: {}\nemail: {}'.format(
request.POST.get('message'),
name,
request.POST.get('email')
)
subject = 'feedback'
try:
email = EmailMessage(
subject,
message,
django_settings.EMAIL_HOST_USER,
[to_email]
)
email.send(fail_silently=False)
except BadHeaderError:
return HttpResponse('Invalid header found.')
return render(request, 'project/index.html', {'showAlert': showAlert})
else:
return render(request, 'project/index.html')
这是表格:
<form id="frm_feedback" role="form" method="POST">
{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control" placeholder="Your name" name="name">
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Your email" name="email">
</div>
<div class="form-group">
<textarea cols="30" rows="10" class="form-control" placeholder="Your message" name="message"></textarea>
</div>
<button type="submit" class="btn btn-primary btn-lg">Submit</button>
</form>
因此,如果有人提交表单,它将发送帖子,而我的视图索引方法将从该表单收集所有数据并向我发送电子邮件,然后呈现具有附加上下文的同一页面,如 '{'showAlert': showAlert}' 我可以显示使用 JavaScript 发出警报。
之后,如果我尝试重新加载“确认重新提交”浏览器警报,我将无法再重新加载页面。
解决方案
推荐阅读
- php - Laravel: How to dynamically create and name views?
- powerbi - PowerBI 与具有 ODBC 连接的 Access DB 存在问题
- c - Gcc:与 x86 32 位的 mstructure-size-option 类似的选项
- google-sheets - 如何从多个工作表创建 Google 电子表格数据透视表?
- vba - Copy range from sheet, and loop through files in a directory and do the following, Add rows to specific sheet, and paste values into sheet
- android - Translating Accelerometer Vectors from Device to Earth Coordinates
- html - High resolution canvas page scale to window height
- c++ - 代码是否交换数组的两个数字?
- angular - 如何将索引处的行插入已排序的 ag-grid
- r - 在向 tibble 添加新列时使用动态命名