← Back to Chapters

Handling Form Submissions

? Handling Form Submissions

? Quick Overview

Handling form submissions in Django is essential for collecting user input and interacting with backend logic. Django primarily uses the GET and POST HTTP methods to handle form data securely and efficiently.

? Key Concepts

  • GET sends data via URL query strings
  • POST sends data inside the request body
  • Django views handle both methods explicitly
  • CSRF tokens protect POST requests

? Syntax & Theory

The method attribute in HTML forms defines how data is transmitted. Django exposes this data using request.GET and request.POST dictionaries inside views.

? Code Example — GET Method

? View Code Example
# Django view handling GET request
from django.shortcuts import render

def search_view(request):
    if request.method == "GET":
        query = request.GET.get('q', '')
        return render(request, 'search_results.html', {'query': query})

? Code Example — POST Method

? View Code Example
# Django view handling POST request
from django.shortcuts import render, redirect
from .forms import ContactForm

def contact_view(request):
    if request.method == "POST":
        form = ContactForm(request.POST)
        if form.is_valid():
            return redirect('thank_you')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

? CSRF Protection

? View Code Example
# Django template with CSRF protection
{% extends "base.html" %}
{% block content %}
{% csrf_token %} {{ form.as_p }}
{% endblock %}

? Live Output / Explanation

GET requests append data to the URL, making them visible and bookmarkable. POST requests keep data hidden and are safer for sensitive operations.

? Interactive Example

Simulator: See how data travels

// SERVER REQUEST INSPECTOR
URL: https://mysite.com/action
Body: (empty)

Select a method and click "Send Request" to observe the difference.

? Use Cases

  • Search forms using GET
  • User registration using POST
  • Contact and feedback forms

✅ Tips & Best Practices

  • Use GET only for non-sensitive data
  • Always validate POST data
  • Include CSRF tokens in POST forms

? Try It Yourself

  • Create a Django search form using GET
  • Build a POST-based registration form
  • Test CSRF protection by removing the token