Chapter 4. Create CRUD Web Application

Template for List Page

Template for List Page
Tag:

The HTML template for the list page is used to display a list of items processed by ListView. There are three essential parts that you need to understand to make a template for ListView.

1. object_list

object_list is a predefined attribute by Django. It is used to bridge between ListView and a template (e.g., list.html).

Template-for-List-Page

You can use another name for object_list to make it more intuitive. When you design the view, the additional name can be set through the context_object_name attribute. In the case of CourseList that we defined earlier (Generic View Basic Attributes ), course_object_list is the name for the list data provided by the LearningCourse model.

Template-for-List-Page

2. {% for ... in object_list %} ... {% endfor %}

As explained on the previous page, you can add simple logic in Django templates using the Django Template Language. When we make a template for ListView, we usually use the for statement.

In the main figure example, the course is a variable for the for statement. It can be any string. In this case, the part sandwiched between {% for ... in object_list %} and {% endfor %} is iterated.

3. Object attribute to be displayed

The {{ course.name }} part defines the actual data to be displayed. The 'course' is a variable defined in the for statement. Due to the for statement, each record object in the table is processed one by one. The .title part is an attribute of 'course' that specifies which data field (or data column) of the table is displayed.

Template-for-List-Page

Practice

In this practice, we'll create a simple template for ListView by showing only one data field – the title of the learning course. Also, we'll explain how to change the title text to Uppercase using the filter in this practice. In the end, we test a customized object_list name defined in a previous section.

1. Edit course_list.html

Open the course_list.html file, add the yellow lines below, and save the file.

templates/employee_learning/course_list.html
<h1>LIST Page</h1>

{% for course in object_list %}

<p> {{ course.title }}</p>

<hr>
{% endfor %}

2. Check the result in a browser

After saving the file, execute the runsever command.

Command Line - INPUT
python manage.py runserver

Go to localhost:8000/employee-learning/course-list/

The URL is defined by the two urls.py files on the topic page URL Dispatcher for CRUD Views . You can see that the list of course titles is displayed.

Template-for-List-Page

You might not have added dummy data yet if no data is displayed. Go to the Django admin page (localhost:8000/admin/) and add dummy data for the LearningCourse model.

3. Add the uppercase filter

Adding the uppercase filter like the one below allows you to change the title name to uppercase.

templates/employee_learning/course_list.html
 :
{% for course in object_list %}

<p> {{ course.title|upper }}</p>

<hr>
{% endfor %}

After saving the HTML file, recheck the site. You'll see that the list is shown in uppercase.

Template-for-List-Page

4. Check the user-friendly name for object_list

In CourseList, we set context_object_name = 'course_object_list'. Check if it works by updating the code like the yellow code below.

templates/employee_learning/course_list.html
 :
{% for course in course_object_list %}

<p> {{ course.title|upper }}</p>
:

Go to localhost:8000/employee-learning/course-list/. You can confirm that the browser still shows the same results.

For the ListView in the Django official documentation, check this link Django documentation reference: ListView .

The HTML template for the list page is used to display a list of items processed by ListView. There are three essential parts that you need to understand to make a template for ListView.

1. object_list

object_list is a predefined attribute by Django. It is used to bridge between ListView and a template (e.g., list.html).

Template-for-List-Page

You can use another name for object_list to make it more intuitive. When you design the view, the additional name can be set through the context_object_name attribute. In the case of CourseList that we defined earlier (Generic View Basic Attributes ), course_object_list is the name for the list data provided by the LearningCourse model.

Template-for-List-Page

2. {% for ... in object_list %} ... {% endfor %}

As explained on the previous page, you can add simple logic in Django templates using the Django Template Language. When we make a template for ListView, we usually use the for statement.

In the main figure example, the course is a variable for the for statement. It can be any string. In this case, the part sandwiched between {% for ... in object_list %} and {% endfor %} is iterated.

3. Object attribute to be displayed

The {{ course.name }} part defines the actual data to be displayed. The 'course' is a variable defined in the for statement. Due to the for statement, each record object in the table is processed one by one. The .title part is an attribute of 'course' that specifies which data field (or data column) of the table is displayed.

Template-for-List-Page

Practice

In this practice, we'll create a simple template for ListView by showing only one data field – the title of the learning course. Also, we'll explain how to change the title text to Uppercase using the filter in this practice. In the end, we test a customized object_list name defined in a previous section.

1. Edit course_list.html

Open the course_list.html file, add the yellow lines below, and save the file.

templates/employee_learning/course_list.html
<h1>LIST Page</h1>

{% for course in object_list %}

<p> {{ course.title }}</p>

<hr>
{% endfor %}

2. Check the result in a browser

After saving the file, execute the runsever command.

Command Line - INPUT
python manage.py runserver

Go to localhost:8000/employee-learning/course-list/

The URL is defined by the two urls.py files on the topic page URL Dispatcher for CRUD Views . You can see that the list of course titles is displayed.

Template-for-List-Page

You might not have added dummy data yet if no data is displayed. Go to the Django admin page (localhost:8000/admin/) and add dummy data for the LearningCourse model.

3. Add the uppercase filter

Adding the uppercase filter like the one below allows you to change the title name to uppercase.

templates/employee_learning/course_list.html
 :
{% for course in object_list %}

<p> {{ course.title|upper }}</p>

<hr>
{% endfor %}

After saving the HTML file, recheck the site. You'll see that the list is shown in uppercase.

Template-for-List-Page

4. Check the user-friendly name for object_list

In CourseList, we set context_object_name = 'course_object_list'. Check if it works by updating the code like the yellow code below.

templates/employee_learning/course_list.html
 :
{% for course in course_object_list %}

<p> {{ course.title|upper }}</p>
:

Go to localhost:8000/employee-learning/course-list/. You can confirm that the browser still shows the same results.

For the ListView in the Django official documentation, check this link Django documentation reference: ListView .

Tag: