{{ form.as_p }} Render Django Forms as paragraph (original) (raw)

Last Updated : 11 Jun, 2026

The {{ form.as_p }} method renders Django form fields as HTML paragraphs. Each form field, along with its label and validation errors, is wrapped inside a

element. This provides a quick way to display forms with minimal template code while maintaining a clean vertical layout.

**Example:

{% csrf\_token %} {{ form.as\_p }}

Using {{ form.as_p }} to Render Django Forms

**Example: Create a project named geeksforgeeks having an app named geeks and create a sample Django Form to render it.

In **geeks /forms.py,

Python `

from django import forms

creating a form

class InputForm(forms.Form):

first_name = forms.CharField(max_length = 200)
last_name = forms.CharField(max_length = 200)
roll_number = forms.IntegerField(
                 help_text = "Enter 6 digit roll number"
                 )
password = forms.CharField(widget = forms.PasswordInput())

`

In **views.py,

Python `

from django.shortcuts import render from .forms import InputForm

Create your views here.

def home_view(request): context ={} context['form']= InputForm() return render(request, "home.html", context)

`

In **templates /home.html,

html `

{% csrf_token %} {{form.as_p }}

`

Open http://localhost:8000/: Check the source code whether the form is rendered as a paragraph or not. By rendering as a paragraph it is meant that all input fields will be enclosed in

tags. Here is the demonstration.

**Explanation:

**Note: {{ form.as_p }} controls only the HTML layout of the form fields. It does not affect form validation, submission handling, or database operations.

When to Use form.as_p

Other Form Rendering Methods

)
Method Output
{{ form.as_p }} Renders fields inside

tags

{{ form.as_table }} Renders fields inside table rows (
{{ form.as_ul }} Renders fields inside list items (
  • )
  • How to Create a Basic Project using MVT in Django? How to Create an App in Django ? {{ form.as_table }} {{ form.as_ul }}