Форма 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. AForm
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
.