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.
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"|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"|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||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
Micropyramid is a software development and cloud consulting partner for enterprise businesses across the world. We work on python, Django, Salesforce, Angular, Reactjs, React Native, MySQL, PostgreSQL, Docker, Linux, Ansible, git, amazon web services. We are Amazon and salesforce consulting partner with 5 years of cloud architect experience. We develop e-commerce, retail, banking, machine learning, CMS, CRM web and mobile applications.
Django-CRM :Customer relationship management based on Django
Django-blog-it : django blog with complete customization and ready to use with one click installer Edit
Django-webpacker : A django compressor tool
Django-MFA : Multi Factor Authentication
Docker-box : Web Interface to manage full blown docker containers and images
More...