Форма django повторно отправляется при обновлении страницы

После того, как я отправляю форму в первый раз, а затем обновляю ее, она отправляется повторно, а я этого не хочу. Как я могу это исправить? Вот мои представления: 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')`

In case of a successful POST request, you should make a redirect [Django-doc] to implement the Post/Redirect/Get pattern [wiki]. This avoids that you make the same POST request when the user refreshes the browser, so:

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

Note: It is better to use a Form [Django-doc] than to perform manual validation and cleaning of the data. A Form will not only simplify rendering a form in HTML, but it also makes it more convenient to validate the input, and clean the data to a more convenient type.


Примечание: Модели в Django пишутся на PascalCase, а не snake_case, поэтому вы можете переименовать модель из contact в Contact.

Вернуться на верх