Django follows the MVC (Model = database-logic,  View=business-logic  Controller=presentation logic ). We can write the required logics based on programming[python] syntax in models and views but, when we want to write simple logics we should follow the django's template syntax, because programming[python]  syntax is not allowed.

We have the Template syntax as follows:

 

 
Syntax Explanation Example
{{  variable name   }} To display the variable value. Just like  " print " as in python input:
Welcome  "{{ request.user.username }}"
output:
Welcome  "Abhi Ram"
 
{% if  condition %}
     --- logic ----
{% endif  %}

It is a conditional expression same as " if " condition in python 

input:
{% if request.user.can_edit %}
    <button> Edit </button>
{% endif %}
output: 
if user has attribute "can_edit"  as True then it will give result 
 " <button> Edit </button> "
nothing otherwise.

 
{% if  condition1 %}
    --logic--
{% elif  condition2 %}
    -- logic--
{% else %}
   -- logic --
{% endif %}

 
same as python's   " if...elif....else "  just like above 
{% for  iterable object %}
   --logic--
{% endfor %}
takes an iterable object  returns an iterator object in every iteration.
To get reverse indexes use " forloop.revcounter "
input:  users = ["Naveen", "Ramu", "Danny", "Shera"]
{% for user in users %}
    {% if forloop.first %} First iter {% endif%} 
    {{ forloop.counter }} . {{ user }}
     {% if forloop.last %} Last iter {% endif%} 
{% endfor %}
output:
    
First iter
    1. Naveen
    2. Ramu
    3. Danny
    4. Shera
    Last iter
{% with  author_books = request.user|getbooks %}
      -- logic --
{% endwith %}
access the variable within the block. it's used when we require the same varialbe multiple times -
{% include 'sub_template.html'  with context=context  %}
                     or
{% include 'menu.html'  %}
This will include the partial tempate data by rendering it with the context -
{% load library %} This will load the given library and made its functionality(tags) available in the template -
{% load tag from library %} This will load a specific tag from the given library -
{% url "namespace:name" var1=1 va2=2 %} This will generate the url by taking  app namespace , view name and required data -
{% autoescape on|off %}
  {{ data }}
{% endautoescape %}

It will stop the XSS vulnerabilities  from the script.

-
{% now %} This gives current datetime and timezone Todays date: {% now "f" %}
{{ "Hello world"|lower  }} To convert the text to lowercase 

{{ "Hello world"|lower  }}  gives  "hello world"

{{ "Hello world"|upper  }} To convert the text to uppercase {{ "Hello world"|upper  }}  gives  "HELLO WORLD"
{{ "hyderabad"|capfirst  }} To convert the first letter to uppercase {{ "hyderabad"|capfirst  }} gives  "Hyderabad"
{{ "hellow world"|title }} converts the text to title case {{ "hellow world"|title }}  gives "Hello World"
{{ "hello    world "|slugify }} converts given text to slug form {{ "hello    world "|slugify }}  gives "hello-world"
{{ "this is micropyramid world"|wordcount }} counts the number of words in the text 
{{ "this is micropyramid world"|wordcount }}  gives "4"
{{  "this is micropyramid world"|truncatechars: n}} show's characters up to number "n" {{  "this is micropyramid"|truncatechars: 7}}  gives "this is ..."
{{  "this is micropyramid world"|truncatewords: n}} show's words up to number "n" {{  "this is micropyramid"|truncatechars: 2}}  gives "this is ..."
{{  query_set|length }} returns the no of objects in quesry set -
{{ query_set|slice:"start:end"  }} returns the sliced query set
{{ query_set|slice:"3:5"  }} same as  "query_set[3:5]"
{{ query_set||dictsort:"key"}} sort's the query_set based on the given key  -
{{ query_set|dictsortreversed:"key"}} sort's the query_set based on the given key  in reversed order -
{{ var_name|default:"Not assigned"}} if variable is not provided then default value is replaced -
{{ datetime_object|date:"d-m-yy"}} return the date in a given format -

Same usages as in views:     
     Operators:
   == ,  = ,  > , >= ,  < , <=,
    
Keywords:   and , or ,  not

Subscribe To our news letter

Subscribe to our news letter to receive latest blog posts into your inbox. Please fill your email address in the below form.
*We don't provide your email contact details to any third parties
Latest Comments
Related Articles
How to create Periodic Tasks in Celery? Nikhila Mergu

Periodic Task is a scheduling task which will run at regular intervals of time. Celery is a powerful, production-ready asynchronous job queue, which allows you ...

Continue Reading...
Creating Django App Siva Chittamuru

Django is a high-level, free and open-source Python Web framework that encourages rapid development. Django follows the model–view–controller (MVC) architectural pattern. Django's primary goal is ...

Continue Reading...
Sorl-thumbnail to generate thumbnails in django Rakesh babu Podishetty

Displaying and Customizing the images in django with sorl-thumbnail.

Continue Reading...