Django Tutorial Part 2: Handling Forms and User Input (2025 Beginner Guide)
In Part 1, you created a basic Django app with views, models, templates, and admin. In this post, you’ll learn how to handle user input by creating forms and saving data to your database using Django’s built-in form features.
What You’ll Learn
- Create a Django Form class
- Render the form in a template
- Handle form submission (POST)
- Validate user input
- Save form data to the database
Step 1: Update Your Model
Let’s use the samePost model from Part 1. If not already created:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.title
Step 2: Create a Django Form
Inmyapp/forms.py, create this form:
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
Step 3: Add View for the Form
Inmyapp/views.py:
from django.shortcuts import render, redirect
from .forms import PostForm
def create_post(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
form = PostForm()
return render(request, 'myapp/create_post.html', {'form': form})
Step 4: Add URL Route
Inmyapp/urls.py:
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('create/', views.create_post, name='create_post'),
]
Step 5: Create the HTML Form Template
Intemplates/myapp/create_post.html:
<h1>Create New Post</h1>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
Step 6: Link to Create Post Page
In yourhome.html, add a link:
<a href="{% url 'create_post' %}">Create a New Post</a>
Conclusion
You’ve successfully created a dynamic form in Django that accepts user input, validates it, and saves it to the database. This is the foundation for building blogs, comment systems, contact forms, and more. In Part 3, we’ll cover user authentication so you can add login, logout, and user registration features!
django forms
django input form
django form validation
beginner django forms
django tutorial part 2
django form handling
django create form
django form post request
django save form data
django user input
django models and forms
django html form
django csrf token
django form submit
django python form example
django template form
django post request
django web form
django form view
django mtv architecture