Python 刷新页面时取消发布

Python 刷新页面时取消发布,python,django,post,Python,Django,Post,我的问题是:当用户刷新表单时,表单中的数据将被发送 我有一个表格,上面有一个帖子请求 用户写下自己的姓名、邮件和消息。如果邮件正确,则会发送邮件 在我看来,如果表单有效,我会将消息添加到我的模型消息中 之后,我禁用“发送”按钮。但是,如果用户刷新页面,将调用我的视图,并在我的模型中添加另一行 我想,当用户刷新页面时,阻止帖子 我的看法是: def contact(request): form = MessageForm(request.POST or None) if for

我的问题是:当用户刷新表单时,
表单中的数据将被发送

我有一个
表格
,上面有一个
帖子
请求

用户写下自己的姓名、邮件和消息。如果邮件正确,则会发送邮件

在我看来,如果
表单
有效,我会将消息添加到我的模型消息中

之后,我禁用“发送”按钮。但是,如果用户刷新页面,将调用我的视图,并在我的模型中添加另一行

我想,当用户刷新页面时,阻止帖子

我的看法是:

def contact(request):

    form = MessageForm(request.POST or None)

    if form.is_valid(): 
        name = form.cleaned_data['name']
        message = form.cleaned_data['message']
        mail = form.cleaned_data['mail']

        new_message = Message()
        new_message.name = name
        new_message.message = message
        new_message.mail = mail
        new_message.save()

        envoi = True

    return render(request, 'vautmieux/contact.html', locals())
我的网址:

path('contact/', views.contact, name='contact'),
我的HTML:

<form action="{% url "contact" %}" method="post">
    {% csrf_token %}
        <div class="row">
           <div class="col-md-6">
              {{ form.name }}
              {{ form.mail }}
           </div>
           <div class="col-md-6" >
              {{ form.message }}
           </div>
           <button id="sendMessageButton" type="submit">ENVOYER LE MESSAGE !</button>
        </div>
    {% if envoi %}Votre message a bien été envoyé !{% endif %}
</form>

{%csrf_令牌%}
{{form.name}
{{form.mail}
{{form.message}}
特使,请留言!
{%if envoi%}请给我发一封请柬!{%endif%}

这是人们实施的主要原因。如果POST请求成功,您应该返回一个指向URL的重定向。因此,浏览器将执行GET,如果浏览器随后执行刷新,它将再次执行GET

def contact(request):
    if request.method == 'POST':
        form = MessageForm(request.POST)
        if form.is_valid(): 
            form.save()
            return redirect('some-message-successful-view')
    else:
        form = MessageForm()
    return render(request, 'vautmieux/contact.html', {'form': form})
def联系人(请求):
如果request.method==“POST”:
form=MessageForm(request.POST)
如果form.is_有效():
form.save()
返回重定向('some-message-successful-view')
其他:
form=MessageForm()
返回呈现(请求'vautmieux/contact.html',{'form':form})
此处
“some-message-successful-view”
需要替换为成功发送消息时触发的视图的名称。这可以是与此处定义的视图相同的视图。我建议使用此选项向用户发送消息,说明消息已成功提交