1. What is Django Template?
Django is a high-level Python web framework that helps to develop fast, secure, and scalable web applications. Django Template is a built-in templating mechanism in Django, which helps to generate dynamic HTML pages using static templates and dynamic data.
Django Templates support inheritance, insertion of variables, and other programming constructs used in web development. Templates can call Python functions using Jinja2 syntax, and hence they can provide functionalities like data storage manipulation and interactivity.
2. Django Template Languages
2.1 Jinja2
Jinja2 is a template engine for Python. It is used to generate HTML or XML output from templates. Jinja2 comes with many features like inline expressions, macros, control structures, template inheritance, and asynchronous programming.
It is very similar to Django Templates, with minor differences in syntax. Here is an example:
{% if my_var %}
Hello {{ my_var }}!
{% endif %}
The if statement controls which block should be included, depending on whether the variable 'my_var' is True or False. Here, 'my_var' is the dynamic data that is supplied to the template along with the static template.
2.2 Django Templates (Django Template Language)
Django Template Language (DTL) is a template system built by Django to separate Python code from HTML, CSS, and JavaScript. It is the default templating language used in Django.
The syntax of DTL is inspired by the syntax of Jinja2. Here is an example:
{% if myvar %}
Hello {{ myvar }}!
{% endif %}
Here, we use the same if statement as in Jinja2, but with slightly different syntax. In DTL, the curly braces denote template tags and the percent sign denotes that we're using a template tag.
3. Django Template Variables
Template variables are placeholders for dynamic data in a template. They are enclosed in double curly braces ({{ var }}). They can hold many types of data, such as strings, numbers, Booleans, lists, and dictionaries. Here's an example:
{{ name }}
Here, the variable 'name' is replaced by the value associated with it when rendering the template.
4. Django Template Tags
Django Template tags provide functionality beyond rendering variables in templates. They're enclosed in curly braces ({% tag %}). Here are some commonly used tags:
4.1 for loop
The for loop is used to loop through a list or dictionary and render a block of the template with each iteration. Here's an example:
{% for item in my_list %}
{{ item }}
{% endfor %}
The above code iterates over 'my_list' and renders each item in the list.
4.2 if statement
The if statement is used to include a block of the template if a given condition is True. Here's an example:
{% if my_var %}
Hello {{ my_var }}!
{% endif %}
Here, the block is only included if 'my_var' is True.
4.3 include
The include tag is used to include another template in the current template. Here's an example:
{% include 'my_template.html' %}
The above code includes the template 'my_template.html' in the current template. It can also be used to pass context data to the included template.
5. Django Template Filters
Django Template Filters are used to modify the value of a variable before rendering it in a template. Filters are separated from the variable by a pipe (|). Here's an example:
{{ my_var|lower }}
Here, the 'lower' filter converts the value of 'my_var' to lowercase before rendering it.
Some commonly used filters are:
date: Used to format date variables.
default: Used to provide a default value for a variable.
length: Used to calculate the length of a list or dictionary.
truncatechars: Used to truncate a string to a specified number of characters.
Filters can also be chained together. Here's an example:
{{ my_var|lower|truncatechars:10 }}
Here, the value of 'my_var' is first converted to lowercase, and then the resulting string is truncated to 10 characters.
6. Conclusion
In conclusion, Django Templates are a powerful tool to generate dynamic HTML pages using static templates and dynamic data. They provide key features like template inheritance, insertion of variables, and other programming constructs used in web development. Django templates support two template engines, Jinja2 and Django Template Language (DTL), both of which provide similar syntax and functionality for generating dynamic content. In addition, Django Template Tags and Filters provide more advanced functionality for creating dynamic templates to handle complex logic and display content.