user995469
user995469

Reputation: 375

How do I confirm a form has been submitted with django?

I'm submitting a form and instead of redirecting to a success url I would like to just show "Form has been submitted" in text on the page when the form has been submitted. Does anyone know how I can do so?

Upvotes: 1

Views: 4380

Answers (3)

garnertb
garnertb

Reputation: 9594

Modify your view to return an HttpResponse object with the text you want as its parameter, after you have validated the request. See the example below.

from django.http import HttpResponse

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponse('Form has been submitted.')

Upvotes: 0

Platinum Azure
Platinum Azure

Reputation: 46233

Honestly, this isn't a Django-specific issue. The problem is whether you are doing a normal form submission or using AJAX.

The basic idea is to POST to your form submission endpoint using AJAX and the form data, and in the Django view, merely update your models and return either an empty 200 response or some data (in XML, JSON, small HTML, whatever you need). Then the AJAX call can populate a success message div on success, or display a failure message if it gets back a non-200 response.

Upvotes: 0

Colin Dunklau
Colin Dunklau

Reputation: 3111

In your view:

if request.POST:
    # validate form, do what you need
    if form_is_valid():
        message = 'Form has been submitted'
        return render_to_response('path/to/template.html', {'message': message})

And then use code in your template like:

{% if message %}
    <h4>{{ message }}</h4>
{% endif %}

Upvotes: 4

Related Questions