在我第一次提交表单然后刷新表单后,它会重新提交,但我不希望这样。 我怎样才能解决这个问题 ? 这是我的观点:
from django.shortcuts import render
from django.http import HttpResponse
from free.models import contact
`def index(request):`
`if request.method == 'POST':`
`fullname = request.POST.get('fullname')`
`email = request.POST.get('email')`
`message = request.POST.get('message')`
`en = contact(fullname=fullname, email=email, message=message)`
`en.save()`
`return render(request, 'index.html')`
redirect
[Django-doc] 来实现 Post/Redirect/Get 模式 [wiki]。这可以避免您在用户刷新浏览器时发出相同的 POST 请求,因此:
from django.shortcuts import redirect
def index(request):
if request.method == 'POST':
fullname = request.POST.get('fullname')
email = request.POST.get('email')
message = request.POST.get('message')
contact.objects.create(fullname=fullname, email=email, message=message)
return redirect('name-of-some-view')
return render(request, 'index.html')
[Django-doc] 而不是执行手动验证和数据清理。 AForm
不会 仅简化了 HTML 中的渲染表单,但也使其更加方便 验证输入,并将数据清理为更方便的类型。Form
注意:Django 中的模型是用 PascalCase 编写的,而不是 snake_case, 因此您可能需要将模型从
重命名为contact
。Contact