django 表单在刷新页面时重新提交

问题描述 投票:0回答:1

在我第一次提交表单然后刷新表单后,它会重新提交,但我不希望这样。 我怎样才能解决这个问题 ? 这是我的观点:

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')`
django django-views
1个回答
0
投票

如果 POST 请求成功,您应该创建

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')

注意:最好使用

Form
 [Django-doc] 而不是执行手动验证和数据清理。 A
Form
不会 仅简化了 HTML 中的渲染表单,但也使其更加方便 验证输入,并将数据清理为更方便的类型。


注意:Django 中的模型是用 PascalCase 编写的,而不是 snake_case, 因此您可能需要将模型从

contact
重命名为
Contact

© www.soinside.com 2019 - 2024. All rights reserved.