Я думаю, что это проблема, на ваш взгляд.
После успешной отправки и обработки веб-формы вам необходимо использовать возврат HttpResponseRedirect , даже если вы перенаправляете только в одно и то же представление.В противном случае некоторые браузеры (я уверен, что FireFox делает это) в конечном итоге отправят форму дважды.
Вот пример того, как с этим справиться ...
def some_view(request):
if request.method == "POST":
form = some_form(request.POST)
if form.is_valid():
# do processing
# save model, etc.
return HttpResponseRedirect("/some/url/")
return render_to_response("normal/template.html", {"form":form}, context_instance=RequestContext(request))
Учитывая вашинедавно добавленное представление выше ...
def index(request):
shouts = Shout.objects.all()
if request.method == "POST":
form = GuestBookForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
shout = Shout(author = cd['author'], message = cd['message'])
shout.save()
# Redirect to THIS view, assuming it lives in 'some app'
return HttpResponseRedirect(reverse("some_app.views.index"))
else:
form = GuestBookForm()
return render_to_response('guestbook/index.html', {'shouts' : shouts,
'form' : form },
context_instance = RequestContext(request))
Это будет использовать reverse для перенаправления на это же представление (если это то, что вы пытаетесь сделать)